2016-12-14 3 views
0

私は以下のようなJSON構造を持っていますが、イメージノードには何も到達できません。どのように私はVolleyライブラリでそれを行うことができますか?どんなアイディアも参考になります。前もって感謝します。イメージノードに到達するにはどうすればいいですか

{ 
    "nodes": [ 
    { 
     "node": { 
     "id": "2536", 
     "title": "Die Düsseldorfer Rabbiner", 
     "image": { 
      "src": "how to reach here", 
      "alt": "", 
      "title": "© Landeshauptstadt Düsseldorf/Michael Gstettenbauer" 
     }, 
     "body": "some text", 
     "category": "Deutsch", 
     "created": "1481344134", 
     "url": "some text" 
     } 
    } 
    ] 
} 

コードブロック

JsonArrayRequest getRequest = new JsonArrayRequest(
      url, 
      new Response.Listener<JSONArray>() { 
       @Override 
       public void onResponse(JSONArray response) { 
        try { 
         JSONObject jsonObject = new JSONObject("response"); 
         JSONArray jsonArray = jsonObject.getJSONArray("nodes"); 
         for(int i = 0; i<jsonArray.length(); i++){ 
          JSONObject jo = jsonArray .getJSONObject(i); 
          String name = jo.getString("category"); 

          Toast.makeText(context, name, Toast.LENGTH_LONG).show(); 

         } 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
+0

どのように手動で行うか、またはGSONのようなライブラリを使用してjsonを構文解析していますか? –

+0

'新しいJSONObject("オブジェクト ")'あなたはそれがどう思いますか? – njzk2

+0

こんにちはRavinder、私は私のコードブロックを追加しました。それを確認していただけますか?私は正しくやっていると思うが、うまくいかない。 – nuhkoca

答えて

1
From the look of things you should use JsonObjectRequest instead JsonArrayRequest. 

JsonObjectRequest request=new JsonObjectRequest(url, new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 

        try { 
         JSONArray array = response.getJSONArray("nodes"); 
         for(int i=0;i<array.length();i++){ 
          JSONObject object= array.getJSONObject(i); 
          JSONObject imageObject= object.getJSONObject("node").getJSONObject("image"); 
          Toast.makeText(TestActivity.this, imageObject.toString(), Toast.LENGTH_LONG).show(); 
         } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 

       } 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 

       } 
      }); 
+0

ねえ、それは私のために働いた。ありがとう! – nuhkoca

1

あなたのJavaモデルはJSON 正確と一致する必要があります。 JSONスキーマの基本要素はオブジェクトであり、配列ではありません。したがって、あなたの要求はJSONObjectRequest、ないJSONArrayRequest次のようになります。

JSONObjectRequest request = new JSONObjectRequest(url, 
      new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONArray response) { 
        try { 
         JSONArray nodes = response.getJSONArray("nodes"); 
         for(int i = 0; i < nodes.length; i++) { 
          JSONObject obj = nodes.getJSONObject(i); 
          JSONObject node = obj.getJSONObject("node"); 
          JSONObject image = node.getJSONObject("image"); 
          String title = image.getString("title"); 

          Toast.makeText(context, title, Toast.LENGTH_LONG).show(); 
         } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }); 

あなたが見ることができるかもしれませんが、あなたが大規模なデータセットを持っている場合、これは退屈得ることができます。だからこそJSON解析ライブラリの使用を強くお勧めします。例えば、GSON,MoshiまたはJacksonである。 Volleyにtraining documentationでこれらのライブラリを利用するようにカスタムリクエストを行う方法に関する良いチュートリアルがあります。

+0

ねえ、それは私のために働いた。あなたは素晴らしいです。ありがとう! – nuhkoca

関連する問題