org.json.JSONArray не может быть преобразован в JSONObject
Я новичок в JSON
и я получаю следующее исключение:
org.json.JSONArray cannot be converted to JSONObject
в первой строке самого раздела try .
Пожалуйста, помогите мне удалить это. Вот мой код:
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, который я получаю из своего php-файла
[
{
"id": "31",
"title": "Business Development - Executive",
"company": "Indidelights",
"category": "Sales and Business Development"
},
{
"id": "40",
"title": "Business Development - Ecommerce MH",
"company": "Ram Gopal & Co",
"category": "Sales and Business Development"
},
{
"id": "41",
"title": "Sales and Business development intern",
"company": "Esanchalak",
"category": "Sales and Business Development"
},
{
"id": "42",
"title": "Purchase Executive",
"company": "Winni.in",
"category": "Marketing"
},
{
"id": "43",
"title": "Marketing Intern",
"company": "Walkover Web Solutions Pvt. Ltd.",
"category": "Marketing"
},
{
"id": "44",
"title": "Marketing Intern",
"company": "SkillKindle Learning Pvt Ltd",
"category": "Marketing"
},
{
"id": "45",
"title": "Graphic Designer",
"company": "Stylopa",
"category": "Graphic Design / Art Work"
},
{
"id": "46",
"title": "Graphic Designer",
"company": "LycondonFX",
"category": "Graphic Design / Art Work"
},
{
"id": "47",
"title": "Web Designer",
"company": "Xapify LLC",
"category": "Software"
},
{
"id": "48",
"title": "Web Designer (Frontend)",
"company": "gotrademark.in",
"category": "Web Design and Development"
},
{
"id": "49",
"title": "Content Writing Intern",
"company": "National Entrepreneurship Network",
"category": "Content Writing / Journalism"
},
{
"id": "50",
"title": "Content Writing Intern",
"company": "Pragmatum Training Pvt Ltd",
"category": "Content Writing / Journalism"
},
{
"id": "51",
"title": "HR Intern",
"company": "GATI Kintetsu Express Pvt Ltd",
"category": "HR / Recruitment"
},
{
"id": "52",
"title": "Pharma Intern",
"company": "Qlinics Health Care Pvt Ltd",
"category": "BioTechnology / Pharma"
},
{
"id": "53",
"title": "Android Developer",
"company": "InoXapps Mobile Solutions Pvt Ltd",
"category": "Mobile App Development"
},
{
"id": "54",
"title": "Mobile App developer",
"company": "RV Media Inc",
"category": "Mobile App Development"
},
{
"id": "55",
"title": "Electronics Intern",
"company": "GA SOFTWARE TECHNOLOGIES PVT LTD",
"category": "Electronics Engineering"
}
]
Переведено автоматически
Ответ 1
Это
JSONObject json = new JSONObject(strResponse);
// your strResponse is a json array
должно быть
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");
}
Ответ 2
Вероятно, вам следует инициализировать 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
Было бы неплохо, если бы вы просто изменили свой цикл, чтобы вместо этого получить JSONObject
from json
(таким образом, удалив зависимость от .names()
:
JSONObject e = json.getJSONObject(i);
Редактировать: полный код
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());
}
Ответ 3
Проблема:
JSONObject json = new JSONObject(strResponse);
здесь, strResponse
может быть в формате JSONArray
, из-за чего вы получаете это исключение при преобразовании его в JSONObject
.
Ответ 4
попробуйте это, ваш первый блок - массив 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);
}