android - 无法解析JSON REST API响应

我从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有效,我使用在线工具对其进行了检查。
但是我想要应用程序中的数据。
我究竟做错了什么?

最佳答案

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

您的整个响应都是一个JSONArray,因为它以[字符而不是{开头,因此您不应使用此响应

JSONObject jsonObj = new JSONObject(jsonStr); 


但是您可以使用它,然后删除另一行

JSONArray contacts = new JSONArray(jsonStr); 


然后从那里开始for循环。

相关-How to parse JSON in Android



*代码可能还有其他问题,但您尚未说明这些问题

本文翻译自 https://stackoverflow.com/questions/41293341/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

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


相关文章:

ios - 使用UICollectionReusableView对单元格进行分组

c# - Azure-调用Storage Rest API以获得列表Blob

android - 市场更新后唤醒应用程序

javascript - 使用Javascript从JSON过滤唯一对

android - Android OpenCV照片捕获

javascript - jQuery数据表插件和动态对象名称

api - 如何在同时接收具有相同ID的多个请求时保持API幂等?

c - 通过HTTP请求(C)将文件上传到Google云端硬盘

android - Google Play上的Android应用程序的说明使用了不同于英语的语言

android - 在RecyclerView中分别对视图进行动画处理