我正在尝试使用以下代码在文章结尾处从数据中解析json对象,但我似乎在将初始字符串转换为JSON以及在“ feed”和“进入”。
key1:
protocol1
key2:
{'name': 'user.name', 'value': 'user@EXAMPLE123.COM, user@EXAMPLE456.COM'}
{'name': 'user.shortname', 'value': 'user'}
{'name': 'proxyuser.hosts', 'value': '*'}
{'name': 'kb.groups', 'value': ', hadoop, localusers, users'}
{'name': 'proxy.groups', 'value': 'group1, group2, group3, group4, group5'}
{'name': 'internal.user.groups', 'value': 'group1, group2'}
{'name': 'internal.groups', 'value': 'none'}
数据字符串:
protected void JSONparse(String result) {
//parse JSON data
try {
JSONObject reader = new JSONObject(result);
JSONObject head = reader.getJSONObject("feed").getJSONObject("entry").getJSONObject(result);
JSONArray jArray = new JSONArray(head);
for(int i=0; i < jArray.length(); i++) {
JSONObject jObject = jArray.getJSONObject(i);
String name = jObject.getString("name");
String location = jObject.getString("location");
String contact = jObject.getString("contact");
Toast toast = Toast.makeText(this, name+" "+location+" "+contact, Toast.LENGTH_SHORT);
toast.show();
} // End Loop
} catch (JSONException e) {
Log.e("JSONException", "Error: " + e.toString());
} // catch (JSONException e)
}
答案 0 :(得分:1)
看起来像JSON不正确。 即使JSON是正确的-“ entry”是一个数组,而不是一个对象。尝试以下代码:
protected void JSONparse(String result) {
//parse JSON data
try {
JSONObject reader = new JSONObject(result);
JSONArray jArray = reader.getJSONObject("feed").getJSONArray("entry");
for(int i=0; i < jArray.length(); i++) {
JSONObject jObject = jArray.getJSONObject(i);
String name = jObject.getString("gsx$name");
String location = jObject.getString("gsx$location");
String contact = jObject.getString("gsx$contact");
Toast toast = Toast.makeText(this, name+" "+location+" "+contact, Toast.LENGTH_SHORT);
toast.show();
} // End Loop
} catch (JSONException e) {
Log.e("JSONException", "Error: " + e.toString());
} // catch (JSONException e)
}
答案 1 :(得分:0)
尝试首先修复您的json字符串。
最简单的方法是使用https://jsoneditoronline.org/等网页……
或者只是在Android Studio中创建your_file_name.json文件,然后让lint向您显示错误在哪里。