2

JSON を Java コードに変換したい。以下のように私のjsoncode。

{
"nodes": [
    {
        "node": {
            "Name": "rahul Patel",
            "Address": "\n\tAhmedabad",
            "Date of Birth": "1991-05-03",
            "Occupation": "developer",
            "Member Since": "3 weeks 4 days"
        }
    }
]

Java コード

try {
            JSONObject objResponse = new JSONObject(strResponse);

            JSONArray jsonnodes = objResponse
                    .getJSONArray(nodes);


            System.out.println("=hello this is DoinBackground");
            for (i = 0; i < jsonnodes.length(); i++) {

                System.out.println("hello this is for loop of DoinBackground");
                JSONObject jsonnode = jsonnodes.getJSONObject(i);

                JSONObject jsonnodevalue = jsonnode
                        .getJSONObject(node);

                bean = new UserProfileBean();

                bean.name = jsonnodevalue.getString(Name);


                listActivities.add(bean);

            }
        } catch (JSONException e) {

            e.printStackTrace();
        }
}

ここでlogcatでは、forループの前の値を出力しますSystem.out.println("=hello this is DoinBackground");が、値はforループの下で出力できませんSystem.out.println("hello this is for loop of DoinBackground");

注: お知らせください。コード内で for ループを使用できない可能性はありますか? はいの場合、その解決策を教えてください。この問題には別の解決策があります。

ありがとう。

4

2 に答える 2

1

json文字列が間違っています。で切り捨てる必要があります}。これを修正すれば動作します。

修正されたjson文字列:

{
    "nodes": [
        {
            "node": {
                "Name": "rahul Patel",
                "Address": "\n\tAhmedabad",
                "Date of Birth": "1991-05-03",
                "Occupation": "developer",
                "Member Since": "3 weeks 4 days"
            }
        }
    ]
}

テストするサンプルコード:

String j = "{\r\n" + 
        "    \"nodes\": [\r\n" + 
        "        {\r\n" + 
        "            \"node\": {\r\n" + 
        "                \"Name\": \"rahul Patel\",\r\n" + 
        "                \"Address\": \"\\n\\tAhmedabad\",\r\n" + 
        "                \"Date of Birth\": \"1991-05-03\",\r\n" + 
        "                \"Occupation\": \"developer\",\r\n" + 
        "                \"Member Since\": \"3 weeks 4 days\"\r\n" + 
        "            }\r\n" + 
        "        }\r\n" + 
        "    ]\r\n" + 
        "}";

try{
    JSONObject objResponse = new JSONObject(j);

    JSONArray jsonnodes = objResponse.getJSONArray("nodes" );

    for (int i = 0; i < jsonnodes.length(); i++) {

        JSONObject jsonnode = jsonnodes.getJSONObject(i);

        JSONObject jsonnodevalue = jsonnode
                .getJSONObject("node");

        Log.v("name", jsonnodevalue.getString("Name"));
        Log.v("address", jsonnodevalue.getString("Address"));
        Log.v("occupation", jsonnodevalue.getString("Occupation"));
    }

}
catch (Exception e) {
    e.printStackTrace();
}
于 2012-04-30T06:00:05.523 に答える
1

Gsonを使用してみてください-http : //code.google.com/p/google-gson/ 。多くの頭痛を救うでしょう。

ただし、コードでは、JSON文字列が適切に解析されていることを確認してください。念のためobjResponse.getJSONArray(nodes)objResponse.getJSONArray("nodes")

于 2012-04-30T05:56:13.117 に答える