【问题标题】:Unable to parse JSON REST API response无法解析 JSON REST API 响应
【发布时间】:2017-05-08 16:20:47
【问题描述】:

我从 URL 收到 JSON REST API 响应。
现在我无法解析 JSON 数据。
我尝试了许多解决方案,但无法获取数据。
响应非常混乱,但它包含所需的数据。
所有 JSON 对象都在一个数组中。

这是 JSON 响应:

[{"umeta_id":"1","user_id":"1","meta_key":"nickname","meta_value":"zfdz"},{"umeta_id":"2","user_id":"1","meta_key":"first_name","meta_value":""},{"umeta_id":"3","user_id":"1","meta_key":"last_name","meta_value":""},{"umeta_id":"4","user_id":"1","meta_key":"description","meta_value":""},{"umeta_id":"5","user_id":"1","meta_key":"rich_editing","meta_value":"true"},{"umeta_id":"6","user_id":"1","meta_key":"comment_shortcuts","meta_value":"false"},{"umeta_id":"7","user_id":"1","meta_key":"admin_color","meta_value":"fresh"},{"umeta_id":"8","user_id":"1","meta_key":"use_ssl","meta_value":"0"},{"umeta_id":"9","user_id":"1","meta_key":"show_admin_bar_front","meta_value":"true"}]

代码”

if (jsonStr != null) {
    try {
        JSONObject jsonObj = new JSONObject(jsonStr);

        // Getting JSON Array node
        JSONArray contacts = jsonObj.getJSONArray("");

        // looping through All Contacts
        for (int i = 0; i < contacts.length(); i++) {
            JSONObject c = contacts.getJSONObject(i);

            String name = c.getString("umeta_id");
            String email = c.getString("user_id");
            String mobile = c.getString("meta_value");


            HashMap<String, String> contact = new HashMap<>();

            contact.put("name", name);
            contact.put("email", email);
            contact.put("mobile", mobile);

            // adding contact to contact list
            contactList.add(contact);
        }
    } catch (final JSONException e) {
        Log.e(TAG, "Json parsing error: " + e.getMessage());
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(getApplicationContext(),
                        "Json parsing error: " + e.getMessage(),
                        Toast.LENGTH_LONG)
                        .show();
            }
        });

    }
} else {
    Log.e(TAG, "Couldn't get json from server.");
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(getApplicationContext(),
                    "Couldn't get json from server. Check LogCat for possible errors!",
                    Toast.LENGTH_LONG)
                    .show();
        }
    });

}

JSON 是有效的,我使用在线工具进行了检查。
但我想要应用程序中的数据。
我做错了什么?

【问题讨论】:

    标签: android json rest json-api wordpress-json-api


    【解决方案1】:

    首先。 jsonObj.getJSONArray("");... 键不能为空字符串。*

    您的整个回复都是JSONArray,因为它以[ 字符而不是{ 开头,所以您不应该使用它

    JSONObject jsonObj = new JSONObject(jsonStr); 
    

    但是你使用这个,并删除另一行

    JSONArray contacts = new JSONArray(jsonStr); 
    

    然后你从那里开始你的 for 循环。

    相关 - How to parse JSON in Android


    * 代码可能还有其他问题,但您没有说明是什么问题

    【讨论】:

    • 代码运行良好,我可以在 android 中收到响应,但它有很多 json 字符串,你能告诉我一个例子如何获得我感兴趣的字段
    • 您拥有的其他一切都很好。为什么你认为不是?
    • 因为它给出了无法解析json的异常,请再次查看编辑问题
    • 你能用实际的异常消息再次编辑吗?
    • 现在您获得了 JSONArray(JSONObjects 数组),您可以迭代每个对象并使用对象上的 getter 方法获取所需的字段,例如 jsonObj.getString("meta_value") 或 @987654329 @
    猜你喜欢
    • 2018-02-23
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多