[英]Map is omitting one curly braces
我有一个放在数组中的json数组。
for(int i = 0; i < jsonarr.length(); i++){
try {
JSONObject jsonobj = jsonarr.getJSONObject(i);
Iterator<Object> keysItr = jsonobj.keys();
while(keysItr.hasNext()) {
Object key = keysItr.next();
Object value = jsonobj.get((String) key);
map.put((String) key, value);
}
System.out.println(map);
但是,当我显示地图时,它给了我一个字符串,其中缺少一个大括号。
输出量
{
subtype=text,
maxlength=22,
values=[
{
"label":"Time",
"value":"two",
"selected":true
},{
"label":"Milk",
"value":"hot"
},{
"label":"sky",
"value":"blue"
}
],
(HERE)
name=text-1496816623336,
description=sa,
className=form-control,
label=Text Field,
type=text,
required=true
}
我也用过jackson和gson,但是在那种情况下他们甚至都没有把整个json放入map中,这可能是一个愚蠢的问题,但是谢谢。
编辑:
这是用于创建Map
的JSON
[
{
"type":"select",
"label":"Select",
"className":"form-control",
"name":"select-1496823185891",
"values":[
{
"label":"Option 1",
"value":"option-1",
"selected":true
},{
"label":"Option 2",
"value":"option-2"
},{
"label":"Option 3",
"value":"option-3"
}
]
},{
"type":"text",
"label":"Text Field",
"className":"form-control",
"name":"text-1496823186970",
"subtype":"text"
}
]
嘿,不,没有大括号,....格式化输出,您将看到:
{
subtype=text, maxlength=22, values=[
{"label":"Time","value":"two","selected":true},
{"label":"Milk","value":"hot"},
{"label":"sky","value":"blue"}
],(HERE)
name=text-1496816623336,
description=sa,
className=form-control,
label=Text Field,
type=text,
required=true
}
编辑(您的评论的答案):这是有效的Json字符串:
[{"type":"select","label":"select","className":"form-control","name":"select-1496823185891","values":[{"label":"Option 1","value":"option-1","selected":true},{"label":"Option 2","value":"option-2"},{"label":"Option 3","value":"option-3"}]},{"type":"text","label":"Text Field","className":"form-control","name":"text-1496823186970","subtype":"text"}]
。
格式:
[
{
"type": "select",
"label": "select",
"className": "form-control",
"name": "select-1496823185891",
"values": [
{
"label": "Option 1",
"value": "option-1",
"selected": true
},
{
"label": "Option 2",
"value": "option-2"
},
{
"label": "Option 3",
"value": "option-3"
}
]
},
{
"type": "text",
"label": "Text Field",
"className": "form-control",
"name": "text-1496823186970",
"subtype": "text"
}
]
在您的其中一个中, "values"
和:
之间有一些隐藏的字符。
如果我的想法是,您希望Map
仍然有两个JsonObject
。 问题是您迭代JsonArray
将每个键/值放在同一Map
,这意味着您用最后一个覆盖了先前的值。
--first item :
map.put("type","select");
--seconds item:
map.put("type","text");
-- result
map.get("type"); //"text"
Map
是平面的,两个键不能有两个值,可以创建一个Map
集合来存储每个值,例如List<Map>
,在要迭代的每个JsonObject
上创建一个新Map
,然后将其存储在清单
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.