基本的に私は持っています:
JSONArray j = new JSONArray();
j.add(new JSONObject()); //JSONObject has a bunch of data in it
j.add(new JSONArray()); //JSONArray has a bunch of data in it
そして今、そのJSONArray
を同じ情報を含むJSONObject
に変えたいと思います。そのため、オブジェクトを渡して、必要なときにすべての情報をオブジェクトから取得できるようにします。どんな助けでも感謝します、ありがとう。
通常、Jsonオブジェクトには値(配列を含む)が名前付きフィールドとして含まれます。だから、次のようなもの:
JSONObject jo = new JSONObject();
JSONArray ja = new JSONArray();
// populate the array
jo.put("arrayName",ja);
JSONでは{"arrayName":[...]}になります。
コード:
List<String> list = new ArrayList<String>();
list.add("a");
JSONArray array = new JSONArray();
for (int i = 0; i < list.size(); i++) {
array.put(list.get(i));
}
JSONObject obj = new JSONObject();
try {
obj.put("result", array);
} catch (JSONException e) {
e.printStackTrace();
}
私はこのようなJSONObjectを持っています:{"status":[{"Response":"success"}]}
。
静的な値を使用せずに、JSONArrayであるJSONObject値を自動的にJSONObjectに変換する場合、そのコードを次に示します。
JSONArray array=new JSONArray();
JSONObject obj2=new JSONObject();
obj2.put("Response", "success");
array.put(obj2);
JSONObject obj=new JSONObject();
obj.put("status",array);
JSONArrayをJSONオブジェクトに変換する:
Iterator<String> it=obj.keys();
while(it.hasNext()){
String keys=it.next();
JSONObject innerJson=new JSONObject(obj.toString());
JSONArray innerArray=innerJson.getJSONArray(keys);
for(int i=0;i<innerArray.length();i++){
JSONObject innInnerObj=innerArray.getJSONObject(i);
Iterator<String> InnerIterator=innInnerObj.keys();
while(InnerIterator.hasNext()){
System.out.println("InnInnerObject value is :"+innInnerObj.get(InnerIterator.next()));
}
}
最初はデータをJSONObjectとして取得できませんか?
おそらく、最初に文字列をJSONObjectとJSONArrayの両方として解析しますか? JSON文字列はどこから来ますか?
JsonArrayをJsonObjectに変換できるかどうかはわかりません。
json.org の以下を使用していると思います
JSONObject.Java
JSONObjectは、名前と値のペアの順序付けられていないコレクションです。その外部形式は、名前と値の間にコロンがあり、値と名前の間にコンマがある中括弧で囲まれた文字列です。内部フォームは、名前で値にアクセスするためのget()およびopt()メソッドと、名前で値を追加または置換するためのput()メソッドを持つオブジェクトです。値は、ブール、JSONArray、JSONObject、Number、Stringのいずれかのタイプ、またはJSONObject.NULLオブジェクトです。
JSONArray.Java
JSONArrayは、値の順序付けされたシーケンスです。その外部形式は、値の間にコンマを含む角括弧で囲まれた文字列です。内部形式は、インデックスで値にアクセスするためのget()およびopt()メソッドと、値を追加または置換するためのput()メソッドを持つオブジェクトです。値は、ブール、JSONArray、JSONObject、Number、Stringのいずれかのタイプ、またはJSONObject.NULLオブジェクトです。