我看过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
}?
答案 0 :(得分:1)
JSON对象是“字典” - 名称和值之间的映射。 JSON数组是值的顺序列表,只有值的序号位置标识它。 “附加”到对象是没有意义的 - 你向它添加新的名称/值对(虽然它们显然称它为追加,只是为了让你感到困惑)。如果在一个对象中,你想要"A":["1","2","3"]
之类的东西,那么你必须将数组(作为名称/值对的值)插入到对象中。
但是请注意,在将数组插入对象之前,或者在将其他值附加到数组之后。您只需要获取/保存对数组的引用。
在上面的示例中,您错误地附加到对象而不是数组。