如何在Android中解析包含数组的Json对象?

时间:2016-05-05 12:02:42

标签: android json

我对此非常陌生,所以我不知道该怎么做,我还在学习如何解析JSON文件。我试图使用Volley解析this 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);
    }
}

4 个答案:

答案 0 :(得分:0)

如果解析JSON在这一点上正确获取了id和name,那么唯一要做的就是使用该数据。你知道它是否抓住了这些信息吗?如果它正在抓取数据,那么接下来要做的就是在Activity中创建一个函数并调用它,例如

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

然后从您的onResponse中,您只需使用您的数据调用processJSONResults即可。如果JSON处理没有工作让我知道,并给我错误/结果。

答案 1 :(得分: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);

一定会帮到你!

答案 2 :(得分:0)

这是JSON对象:

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

使用键()迭代器迭代所有属性,并为每个属性调用 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!
    }
}

希望这会对你有所帮助.. 感谢

答案 3 :(得分:0)

Contacts是一个数组。使用以下内容。

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

现在你可以迭代数组了。