在获取json数据时,我收到错误:
JSONArray无法转换为JSONObject
json生成代码:
JSONObject parent = new JSONObject();
DatabaseHandler dbh = new DatabaseHandler(getApplicationContext());
for(int i=0; i < allEds.size(); i++){
String edsText = allEds.get(i).getText().toString();
//spinner = allSpns.get(i);
String spinSelected=allSpns.get(i).getSelectedItem().toString();
try
{
JSONObject json = new JSONObject();
json.put("Id", i);
json.put("FieldName", edsText);
json.put("FieldType",spinSelected);
parent.accumulate("data", json);
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Generated json is
{"data":
[{"FieldType":"Account Number","FieldName":"r","Id":0},
{"FieldType":"Net Banking Id","FieldName":"tt","Id":1}
]}
code for json read
------------------
JSONObject jsonObj = new JSONObject(folderStructure);
JSONObject data = jsonObj.getJSONObject("data");
String id = data.getString("Id");
String value = data.getString("FieldName");
Log.d("Item name: ", value);
在阅读上述json时遇到错误 代码有什么问题??
答案 0 :(得分:13)
更改
JSONObject data = jsonObj.getJSONObject("data");
到
JSONArray data = jsonObj.getJSONArray("data");
由于数据的值是JsonArray而不是JSONObject。
要获取单个ID和字段名称,您应该遍历此JSONArray,如下所示:
for(int i=0; i<data.length(); i++)
{
JSONObject obj=data.getJSONObject(i);
String id = obj.getString("Id");
String value = obj.getString("FieldName");
Log.d("Item name: ", value);
}
答案 1 :(得分:1)
使用此方法:
private void showJSON(String response) {
list = new ArrayList<>();
String name = null;
try {
JSONArray jsonObject = new JSONArray(response);
for(int i = 0; i < jsonObject.length(); i++) {
JSONObject obj = jsonObject.getJSONObject(i);
//store your variable
list.add(obj.getString("Name"));
}
// JSONArray result = jsonObject.getJSONArray("");
// JSONObject collegeData = result.getJSONObject(0);
// list.add(jsonObject.getString(collegeData.getString("Name")));
Toast.makeText(getActivity(), name, Toast.LENGTH_LONG).show();
city_list.addAll(list);
adapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
// Toast.makeText(getApplicationContext(), response, Toast.LENGTH_LONG).show();
}
}