0

我已经看到了这个问题并理解了答案,但无法在我的场景中使用它。

我的场景:我通过JPAmysql 数据库检索数据,并希望将这些数据放入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

4

1 回答 1

1

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

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

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

于 2013-01-21T22:48:13.863 回答