2017-08-02 204 views
1

私はorg.jsonを使用してjsonオブジェクトと値を検索します(org.jsonが必要です)。子配列要素に到達しようとしています。JavaのJSON入れ子配列要素を取得

マイJSON:メソッドがどのように見える

{"array 1":[ 
    {"name":"red","capacity":"123","server":"red1"}, 
    {"capacity":"456","name":"blue","name":"blue1"} 
]} 
{"array 2":[ 
    {"capacacity":"1234","name":"white","server":"white1"}, 
    {"name":"black","capacity":"4567","server":"black1"} 
]} 
{"array 1":[ 
    {"name":"red","capacity":"123","server":"red1"}, 
    {"capacity":"456","name":"blue","name":"blue1"} 
]} 
{"array 2":[ 
    {"capacity":"1234","name":"white","server":"white1"}, 
    {"name":"black","capacity":"4567","server":"black1"} 
]} 

{ 
    "Info": { 
    "name": "my_json", 
}, 
    "my_array": { 
    "arrays": [ 
     { 
     "array 1": [ 
     { 
      "name": "red", 
      "server": "red1", 
      "capacity": "123" 
     }, 
     { 
      "name": "blue", 
      "server": "blue1", 
      "capacity": "456" 
     } 
    ] 
    }, 
    { 
     "array 2": [ 
     { 
      "name": "white", 
      "server": "white1", 
      "capacity": "1234" 
     }, 
     { 
      "name": "black", 
      "server": "black1", 
      "capacity": "4567" 
     } 
     ] 
    } 
    ] 
} 
} 

この出力

public static String processJson(String[] args) throws JSONException { 
    String value = ""; 
    String jsonData = readFile(args[0]); 
    JSONObject jobj = new JSONObject(jsonData); 
    if (args[1].equals("my_array")) { 
     JSONObject parent = jobj.getJSONObject("my_array"); 
     JSONArray jarr = parent.getJSONArray("arrays"); 
     for (int i = 0; i < jarr.length(); i++) { 
      for (int j = 0; j < jarr.length(); j++) { 
       JSONObject test1 = jarr.getJSONObject(j); 
       System.out.println(test1); 
      } 
     } 
    } 
    return value; 
} 

私がするの戻り値をしたいと思います:

[{"name":"red","capacity":"123","server":"red1" 
{"capacity":"456","name":"blue","name":"blue1"}] 

array 1要素を取得することはできますか? ネストされたループはそれを処理すると思っていましたが、同じ時間だけを出力します。

+0

何フォーマットしたいなら、あなたはループ

 JSONObject test1 = jarr.getJSONObject(0); System.out.println(test1); 

を必要としませんか? – jeanr

+0

@jeanr私はそれが 'my_array'だと思います –

+0

jsonペイロードの構造を読み込もうとすると、my_array.arrays [0]。" array 1 " my_array.arrays [1]。" array 1 " json形式がきちんと整理されていますか、つまり適切な階層または関係になっていますか? – dirai

答えて

2

あなたが最初の要素だけをしたい場合は、引数[1]であるtest1あなたの缶

System.out.println (test1.toString().replace ("{\"array 1\":", "")); 
+0

ニース!両方のループを削除しました! –

+0

引数として渡された場合、 'array 1'をどのように削除しますか?例の 'replace(" {\ "変数名\": "、" ")'は文字列を削除しません。 –

+0

'str.replace(var、" ")'のような変数を使うことができます。 'var'は' var = "{\" "array" + "\": ";' –

関連する問題