0

私はこの質問を見て答えを理解しましたが、私のシナリオでは使用できません。

私のシナリオ:mysqlデータベースからデータを取得し、このデータをこのようなものJPAに入れたい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"], ...}

JSONArrays を作成せずJSONOBject.append 使用する方法はありますか?putJSONObjectJSONObject

4

1 に答える 1

1

JSONオブジェクトは「辞書」、つまり名前と値の間のマップです。JSON配列は値の順次リストであり、値の序数位置のみがそれを識別します。オブジェクトに「追加」することは意味がありません。新しい名前と値のペアをオブジェクトに追加します(ただし、混乱させるために、追加と呼ばれているようです)。オブジェクト内で次のようなものが必要な場合は、必然的に(名前と値のペアの値として)配列をオブジェクトに挿入"A":["1","2","3"]する必要があります。

ただし、配列をオブジェクトに挿入する前、または配列に追加の値を追加できるようになった後のいずれかに注意してください。配列への参照を取得/保存する必要があります。

上記の例では、配列ではなくオブジェクトに追加するという間違いを犯しています。

于 2013-01-21T22:48:13.863 に答える