-3

初めて JSON を解析してみました。私の JSON データには、1 つの JSON 配列に複数の JSON オブジェクトがあります。データサンプル:

{ "root":[ {"Sc_we":[ ]}, {"Sc_wesam":[ {"head":"ようこそページ"}, {"color":"Black"} ]} ] }

これは私のコードです:

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    try {
        website = new URL(
                    "http://xxxxxxx");
        InputStream in = website.openStream();
        parseMovie(in);
    }
    catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}


protected void parseMovie(InputStream json) throws IOException,
JSONException {
    // TODO Auto-generated method stub

    BufferedReader reader = new BufferedReader(new InputStreamReader(json));
    StringBuilder sb = new StringBuilder();
    String line = reader.readLine();
    while (line != null) {
        sb.append(line);
        line = reader.readLine();
    }
    reader.close();
    System.out.println(sb);
    JSONObject jobj = new JSONObject(sb.toString());
    System.out.println("jsonobj:" + jobj);

    JSONArray array = jobj.getJSONArray("root");

    System.out
        .println("jsonobject   :+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
                + array);
}

上記の JSON データを取得しますが、S_we値とSc_wesamデータが必要です。

どうすればいいですか?

4

1 に答える 1

3

を使用して個々の要素を反復処理しJSONArray、データについていくつかの仮定を立てることができます。

JSONArray array = jobj.getJSONArray("root");
JSONObject subObj;
JSONArray subArray;

for (int i = 0; i < array.length(); i++)
{
    subObj = array.getJSONObject(i);

    if (subObj.has("Sc_wesam")) // handle Se_wesam
    {
        subArray = subObj.getJSONArray("Sc_wesam");

        for (int j = 0; j < subArray.length(); j++)
        {
            subObj = subArray.getJSONObject(j);
            if (subObj.has("head"))
                System.out.println("Sc_wesam head value: " +
                                   subObj.getString("head"));
            else if (subObj.has("color"))
                System.out.println("Sc_wesam color value: " +
                                   subObj.getString("color"));
        }
    }
    else if (subObj.has("Sc_we")) // handle Se_we
    {
        subArray = subObj.getJSONArray("Sc_wesam");

        // ... etc.
    }
}
于 2012-09-26T20:17:13.083 に答える