簡體   English   中英

如何在Android中解析包含數組的Json對象?

[英]How to parse Json object containing an array in Android?

我對此很陌生,所以我不知道該怎么做,而且我仍在學習如何解析JSON文件的過程。 我試圖使用Volley解析 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);
    }
}

如果此時JSON的解析正確獲取了ID和名稱,那么剩下要做的唯一一件事就是使用該數據。 您知道它是否正在獲取該信息嗎? 如果要獲取數據,那么接下來要做的就是在Activity中創建一個函數,然后調用該函數

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

然后,從onResponse中,只需將data調用processJSONResults即可。 如果JSON處理不起作用,請告訴我,並告訴我錯誤/結果。

嘗試這樣..

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);

它一定會幫助您!

這是JSON對象:

{“ number1”:“ value1”,“ number2”:“ value2”,“ number3”:“ value3”}

使用keys()迭代器迭代所有屬性,並對每個屬性調用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!
    }
}

希望對您有幫助。.謝謝

聯系人是一個數組。 使用以下內容。

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

現在,您可以迭代數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM