Возникла проблема с парсером JSON с помощью класса JsonReader (JSON приложен ниже, а так-же код парсера). Получается что первый элемент он читает хорошо, а вот на втором элементе получаю исключение:
W/System.err: java.lang.IllegalStateException: Expected a name but was BEGIN_OBJECT W/System.err: at android.util.JsonReader.nextName(JsonReader.java:390) at ua.com.lacharme.sdk.FloristList.readData(FloristList.java:20) at ua.com.lacharme.sdk.Api.getFloristList(Api.java:136) W/System.err: at ua.com.lacharme.QRScanerActivity$1$1$1.run(QRScanerActivity.java:114) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) at java.lang.Thread.run(Thread.java:764)
JSON
{
"0": {
"id": 1,
"name": "Внештатный флорист",
"phones": "000",
"is_active": "0",
"worker_type_id": "2",
"created_at": "2018-06-19 08:04:45",
"updated_at": "2018-12-22 14:46:31",
"pivot": {
"partner_id": "1",
"worker_id": "1"
}
},
"2": {
"id": 3,
"name": "Александра",
"phones": "5445",
"is_active": "0",
"worker_type_id": "2",
"created_at": "2018-09-13 23:50:32",
"updated_at": "2018-12-25 14:35:20",
"pivot": {
"partner_id": "1",
"worker_id": "3"
}
},
"8": {
"id": 9,
"name": "Ирена",
"phones": "+45544",
"is_active": "1",
"worker_type_id": "2",
"created_at": "2018-10-30 11:53:56",
"updated_at": "2018-10-30 11:53:56",
"pivot": {
"partner_id": "1",
"worker_id": "9"
}
},
"9": {
"id": 10,
"name": "Олеся",
"phones": "+45545",
"is_active": "0",
"worker_type_id": "2",
"created_at": "2018-12-07 14:31:13",
"updated_at": "2019-01-10 13:55:51",
"pivot": {
"partner_id": "1",
"worker_id": "10"
}
},
"10": {
"id": 11,
"name": "Марина",
"phones": "+45545",
"is_active": "1",
"worker_type_id": "2",
"created_at": "2018-12-16 18:45:53",
"updated_at": "2018-12-16 18:45:53",
"pivot": {
"partner_id": "1",
"worker_id": "11"
}
},
"11": {
"id": 12,
"name": "Наталья Бабич",
"phones": "55565",
"is_active": "1",
"worker_type_id": "2",
"created_at": "2018-12-20 11:22:35",
"updated_at": "2018-12-20 11:22:35",
"pivot": {
"partner_id": "1",
"worker_id": "12"
}
}
}
Java
public void readData(JsonReader reader)
{
floristList = new HashMap<Integer, String>();
try {
reader.beginObject();
while (reader.hasNext()) {
reader.nextName();
int id = 0;
String name = "";
reader.beginObject();
while(reader.hasNext()) {
String field = reader.nextName();
switch (field) {
case "id" :
id = Integer.parseInt(reader.nextString());
break;
case "name" :
name = reader.nextString();
break;
default:
reader.skipValue();
break;
}
}
reader.endObject();
floristList.put(id, name);
reader.skipValue();
}
reader.endObject();
} catch (Exception e) {
e.printStackTrace();
}
}
Разобрался. Здесь была лишняя строка в основном цикле, из-за него он опускал указать в самый конец.
reader.skipValue();
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я хочу отправить запрос на сервер сделанный на Flask запрос с данными в формате JSON(в некоторых случаях POST запрос, а в некоторых случаях GET) из программы...