Java 无法将org.json.JSONArray转换为JSONObject
我不熟悉Java 无法将org.json.JSONArray转换为JSONObject,java,android,json,Java,Android,Json,我不熟悉JSON,我得到了以下例外情况: org.json.JSONArray无法在try部分的第一行转换为JSONObject 请帮我取下这个。这是我的密码: try { JSONObject json = new JSONObject(strResponse); //Get the element that holds the internship ( JSONArray ) JSONArray name = json.names(); JSONArr
JSON
,我得到了以下例外情况:
org.json.JSONArray无法在try部分的第一行转换为JSONObject
请帮我取下这个。这是我的密码:
try {
JSONObject json = new JSONObject(strResponse);
//Get the element that holds the internship ( JSONArray )
JSONArray name = json.names();
JSONArray internships = json.toJSONArray(name);
//Loop the Array
for(int i=0;i < internships.length();i++) {
Log.e("Message","loop");
HashMap<String, String> map = new HashMap<String, String>();
JSONObject e = internships.getJSONObject(i);
map.put("id", String.valueOf("id"));
map.put("title", "Title :" + e.getString("title"));
map.put("company", "Company : " + e.getString("company"));
map.put("category", "Category : " + e.getString("category"));
mylist.add(map);
}
} catch(JSONException e) {
Log.e("log_tag", "Error parsing data "+e.toString());
}
您可能应该将
json
初始化为JSONArray
:
JSONObject json = new JSONObject(strResponse);
那么应该是:
JSONArray json = new JSONArray(strResponse);
但是,以下两种操作不起作用:
JSONArray name = json.names(); //.names() doesn't exist in JSONArray
JSONArray internships = json.toJSONArray(name); // Is instead to be seen as
如果您只是更改循环,从json
获取JSONObject
(从而消除对.names()
的依赖关系),那就可以了:
编辑:完整代码
try {
JSONArray internships = new JSONArray(strResponse);
//Loop the Array
for(int i=0;i < internships.length();i++) {
Log.e("Message","loop");
HashMap<String, String> map = new HashMap<String, String>();
JSONObject e = internships.getJSONObject(i);
map.put("id", String.valueOf("id"));
map.put("title", "Title :" + e.getString("title"));
map.put("company", "Company : " + e.getString("company"));
map.put("category", "Category : " + e.getString("category"));
mylist.add(map);
}
} catch(JSONException e) {
Log.e("log_tag", "Error parsing data "+e.toString());
}
试试{
JSONArray实习=新JSONArray(strResponse);
//循环数组
对于(inti=0;i
问题:
JSONObject json = new JSONObject(strResponse);
在这里,
strResponse
的格式可能是JSONArray
,因此在将其转换为JSONObject
时会出现此异常。试试这个,您的第一个块是json数组,所以请获取第一个json数组
JSONArray jsonarray = new JSONArray(strResponse);
for(int i=0;i < jsonarray .length();i++) {
JSONObject jsonobj = new JSONObject(i);
map.put("id", jsonobj .getString("id"));
map.put("title", jsonobj .getString("title"));
map.put("company", jsonobj .getString("company"));
map.put("category", jsonobj .getString("category"));
mylist.add(map);
}
JSONArray JSONArray=新的JSONArray(strResponse);
for(int i=0;i
如果这确实是您收到的json,您应该替换整个json:
JSONObject json = new JSONObject(strResponse);
//Get the element that holds the internship ( JSONArray )
JSONArray name = json.names();
JSONArray internships = json.toJSONArray(name);
与
这个
应该是
JSONArray jsonarray = new JSONArray(strResponse);
[
表示json数组节点
{
表示json对象节点
for(int i=0; i < jsonarray.length(); i++) {
JSONObject jsonobject = jsonarray.getJSONObject(i);
String id = jsonobject.getString("id");
String title = jsonobject.getString("title");
String company = jsonobject.getString("company");
String category = jsonobject.getString("category");
}
for(int i=0;i
发布您的完整堆栈traceNo问题@user2545272!如果它解决了您的问题,请不要忘记将其标记为答案。:-)@lvo hi我也有同样的问题……你能告诉我你是如何得到strResponse的值的吗…………谢谢你的解释,大多数例子中都有一个包含数组的对象,但不仅仅是数组本身,但这为我清除了构造函数JSONObject(int)之外的问题未定义?这应该是JSONObject JSONObject=jsonarray.getJSONObject(0);而不是JSONObject JSONObject=new JSONObject(i);@TarunVarshney是的,这是一个典型的错误。现在已纠正。好吧,我的按钮
JSONArray internships = json.toJSONArray(strResponse);
JSONObject json = new JSONObject(strResponse);
// your strResponse is a json array
JSONArray jsonarray = new JSONArray(strResponse);
for(int i=0; i < jsonarray.length(); i++) {
JSONObject jsonobject = jsonarray.getJSONObject(i);
String id = jsonobject.getString("id");
String title = jsonobject.getString("title");
String company = jsonobject.getString("company");
String category = jsonobject.getString("category");
}