2016-05-05 14 views
0

これはとても新しいので、これを行う方法はわかりません。JSONファイルを解析する方法を学ぶプロセスはまだ進行中です。私は、ボレーを使用してthis JSONオブジェクトを解析しようとしていますが、私は次に何をするかについてのロジックが欠けています。ありがとうございました! は、ここに私のコードです:Androidで配列を含むJsonオブジェクトを解析するには?

public class MainActivity extends AppCompatActivity { 
    private TextView results; 
    String JsonUrl = "http://api.androidhive.info/contacts/"; 
    String data = ""; 
    RequestQueue requestQueue; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     requestQueue = Volley.newRequestQueue(this); 

     results = (TextView) findViewById(R.id.jsonData); 

     JsonObjectRequest objRequest = new JsonObjectRequest(Request.Method.GET, 
       JsonUrl, null, new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 
       try { 
        JSONObject contactObj = response.getJSONObject("contacts"); 

        for (int i = 0; i < contactObj.length(); i++) { 
         String id = contactObj.getString("id"); 
         String name = contactObj.getString("name"); 

         data += ""; 
         data += "Id " + id + "\n\n"; 
         data += "Name " + name + "\n\n"; 
        } 
        results.setText(data); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.e("Volley", "Error"); 
      } 
     }); 
     requestQueue.add(objRequest); 
    } 
} 
+0

あなたの問題は何ですか?あなたがやっているように解析するだけで、 'email、phone、address'などでも同じことをします。 – Gaurav

+0

[AndroidでJSONArrayを解析する方法]の複製があります。http://stackoverflow.com/質問/ 17136769/how-to-parse-jsonarray-in-android) –

+0

[JavaでJSONを解析する方法](http://stackoverflow.com/questions/2591098/how-to-parse-json-in)の可能な複製-java) –

答えて

0

はこのようにしてみてください。..

JSONObject contactObj = new JSONObject(response); 
JSONArray contactArray = contactObjj.getJSONArray("contacts") 
       for (int i = 0; i < contactArray.length(); i++) { 
        JSONObject jsonObj = contactArray.getJSONObject(i); 
        String id = jsonObj.getString("id"); 
        String name = jsonObj.getString("name"); 

        //Define your logic here to pass the data on results 

       results.setText(data); 

それはきっとあなたを助けます!

+0

ありがとうございました!変更する必要があったのはJSONObject contactObj =新しいJSONObject(レスポンス)でした。 JSONObjectのcontactsObj =新しいJSONObject(String.valueOf(レスポンス)); – jlively

+0

@jlively ...鉱山の楽しさ...親愛なる(String.valueOf(レスポンス))は、あなたが持っているjsonレスポンスのフォーマットに依存し、ここから私はあなたのjsonレスポンスフォーマットを伝えることができません。 –

0

JSONの解析が正しく、この時点でのIDと名前を取得している場合、実際にやって残された唯一の事は、そのデータを使用しています。あなたはその情報をつかんでいるかどうか知っていますか?それはデータをつかんされている場合、実際に行うには、次のことは、あなたの活動で関数を作成し、

public void processJSONResults(String id, String name) { 
    ...Handle processing of data, update GUI etc... 
} 

次に、あなたのonResponseからあなたは自分のデータでprocessJSONResultsを呼ぶだろうたとえば

のためにそれを呼び出すです。 JSONの処理がうまくいかない場合は、私に知らせて、エラー/結果を教えてください。

0

これはJSONオブジェクトである:

{ "番号1": "値1"、 "数値2": "値2"、 "number3": "値3"}

は(キーを使用)イテレータすべてのプロパティを繰り返し処理し、get()とそれぞれ呼び出します。

コード例:これがお手伝いします

Iterator<String> iter = json.keys(); 
while (iter.hasNext()) { 
    String key = iter.next(); 
    try { 
     Object value = json.get(key); 
    } catch (JSONException e) { 
     // Something went wrong! 
    } 
} 

希望.. おかげ

0

コンタクト配列です。以下を使用してください。

JSONArray contactObjArray = response.getJSONArray("contacts"); 

これで、配列を反復処理できます。

関連する問題