无钥匙

问题描述:

我们希望在Java中无钥匙

{ 
[ 
    { 
    "key": "ABC001", 
    "value": true 
    }, 
    { 
    "key": "ABD12", 
    "value": false 
    }, 
    { 
    "key": "ABC002", 
    "value": true 
    }, 
] 
} 

下面创建一个JSON结构,要实现这一点,我们创建了一个类,并有其内部列表私有财产创建一个JSON。 但是,正在为这个关键values

class Response{ 
private List<Property> values; 
// setter getter for this private property 
} 

输出是

{ 
values : [ 
{ 
"key": "ABC001", 
"value": true 
}, 
...... 
] 

是否有我们创建一个没有钥匙,里面的{ }阵列的方法吗?

+0

你正在创建一个类'响应'而不是'List '的json。你可以添加你用来制作json的代码,以便我们纠正它吗? – nonzaprej

+0

@nonzaprej我尝试从列表本身创建json,然后它不在{}内部,它以[{Key,value},{Key,vaue}]形式出现。我们希望它在{[{},{}]} – Suraj

+0

这看起来不像是List - > Array的工作,尝试使用Map - > Object代替 –

不幸的是,你试图构建的不是一个有效的json。 你可以尝试验证它here

例如,使用这个“json”,读取数组将不可能,因为它没有密钥。

{ 
"foo_key" : "bar", 
[ 
    { 
    "key": "ABC001", 
    "value": true 
    }, 
    { 
    "key": "ABD12", 
    "value": false 
    }, 
    { 
    "key": "ABC002", 
    "value": true 
    }, 
] 
} 

解析JSON像这样的,你可以得到“酒吧”,因为它有一个键(“foo_key”),但你怎么能得到阵列?

您使用的代码对于有效的json已经是正确的。

所以,出于某种原因,你想要一个无效的json,这是一个包含在{}之间的数组。这里是你如何做到这一点(我假设你用google-gson来制作和解析jsons,因为你没有包括你的代码):

// example of the creation of the list 
List<Property> values = new ArrayList<>(); 
values.add(new Property("ABC001", true)); 
values.add(new Property("ABD12", false)); 
values.add(new Property("ABC002", true)); 
// 

Gson gson = new Gson(); 
String json = gson.toJson(values, new TypeToken<List<Property>>() {}.getType()); 
json = "{" + json + "}";// gotta do what you gotta do...