2012-04-30 4 views
2

JSONをJavaコードに変換したいと思います。私のjsoncodeは下記の通りです。jsonのJavaコードの書き方

{ 
"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で私は、ループSystem.out.println("=hello this is DoinBackground");のための前の値を印刷し、その値は、forループSystem.out.println("hello this is for loop of DoinBackground");

NOTEの下に印刷することはできません。私に知らせてください。 、コード内でループに使用できない可能性はありますか?もしそうなら、解決策を与えてください。この問題に対するもう一つの解決策があります。

ありがとうございました。

答えて

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(); 
} 
+0

ありがとう、 forループなしで可能ですか? –

+0

が可能ですが、推奨されていません。しかし、あなたは 'for'ループの代わりに' while'ループを使うかもしれませんが、あなたのケースでは何の違いもないと思います。しかし、あなたが常に一つのオブジェクトを配列で取得しようとしていることが分かっているなら、単純に例えばインデックス値を使って配列をスキップすることができます。 'JSONObject jsonnode = jsonnodes.getJSONObject(0);' – waqaslam

+0

@RahulPatel ya可能ですが、jsonの複数の要素であれば、このforループが使用されます。単品の場合は、forループなしでやり遂げることができます – user1089679

1

Gson - http://code.google.com/p/google-gson/をお試しください。頭痛の多くを保存します。

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

+0

おかげで、 は、それがループの後に表示されていない理由を私にlogcatに知らせてください。 –

関連する問題