无法解析 JSON REST API 响应
Unable to parse JSON REST API response
我收到了来自 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("");
...key不能为空串*
您的整个回复是 JSONArray
,因为它以 [
字符而不是 {
字符开头,因此您不应使用此
JSONObject jsonObj = new JSONObject(jsonStr);
而是你使用这个,并删除另一行
JSONArray contacts = new JSONArray(jsonStr);
然后从那里开始 for 循环。
相关 - How to parse JSON in Android
* 代码可能还有其他问题,但你没有说明是什么
我收到了来自 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("");
...key不能为空串*
您的整个回复是 JSONArray
,因为它以 [
字符而不是 {
字符开头,因此您不应使用此
JSONObject jsonObj = new JSONObject(jsonStr);
而是你使用这个,并删除另一行
JSONArray contacts = new JSONArray(jsonStr);
然后从那里开始 for 循环。
相关 - How to parse JSON in Android
* 代码可能还有其他问题,但你没有说明是什么