JSONObject.append - 结果是嵌套数组?

时间:2013-01-21 16:32:29

标签: java json

我看过this question并了解答案,但无法在我的方案中使用它。

我的场景:我通过JPA从mysql数据库中检索数据,并希望将此数据放入JSONObject这样的

{
  "A":["1","2","3"], 
  "B":["1","2","3","4"], 
  "C":["1","2"]
}

问题是我不知道要检索多少个数组。它可以是1,也可以是200,具体取决于数据库中的数据。

如果我append将数据转换为JSONObject,请执行以下操作:

import org.apache.tapestry5.json.JSONObject 
// ...
JSONObject data = new JSONObject();
for (Value val : values) data.append(val.getName(), val.getValue());

我会得到

{"val_name": [[["1"],"2"],"3"], ...}

有没有办法在没有的情况下使用JSONOBject.append 创建JSONArrays并put将它们加入JSONObject,这将导致嵌套JSONObject }?

1 个答案:

答案 0 :(得分:1)

JSON对象是“字典” - 名称和值之间的映射。 JSON数组是值的顺序列表,只有值的序号位置标识它。 “附加”到对象是没有意义的 - 你向它添加新的名称/值对(虽然它们显然称它为追加,只是为了让你感到困惑)。如果在一个对象中,你想要"A":["1","2","3"]之类的东西,那么你必须数组(作为名称/值对的值)插入到对象中。

但是请注意,在将数组插入对象之前,或者在将其他值附加到数组之后。您只需要获取/保存对数组的引用。

在上面的示例中,您错误地附加到对象而不是数组。