在没有密钥的情况下创建JSON

时间:2017-06-01 23:17:44

标签: java json gson

我们想在Java中创建一个JSON结构,如下所示

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

为了实现这一点,我们创建了一个类,并在其中包含一个列表私有属性。 但那就是创建一个键values

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

此输出为

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

我们是否有办法在没有密钥且在{ }

内部创建数组

2 个答案:

答案 0 :(得分:2)

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

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

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

解析像这样的json,你可以得到“bar”,因为它有一个键(“foo_key”),但你怎么能得到数组呢?

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

答案 1 :(得分:2)

因此,出于某种原因,您需要一个无效的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...