java.lang.Исключение IllegalStateException: Ожидаемый объект BEGIN_OBJECT, но был СТРОКОЙ в строке 1

#java #android #json #jsonserializer #json-serializable

#Ява #Android #json #jsonserializer #json-сериализуемый

Вопрос:

Я пытаюсь сериализовать приведенные ниже данные JSON на java

 [{  "clear": "0",  "default": ["123","234"],  "mandatory": "1",  "visible": "1" }]  

мой класс сериализатора выглядит следующим образом,

 public class HandleConfig{ @SerializedName("visible") private int visible; @SerializedName("clear") private int clear; @SerializedName("mandatory") private int mandatory; @SerializedName("default") private JSONArray def;  // getter and setter methods here...  

}

//вызов сериализатора

 Gson gson1 = new Gson(); Type collectionType1 = new TypeTokenlt;Listlt;HandleConfiggt;gt;(){}.getType(); Listlt;HandleConfiggt; handleConfigurations = gson1.fromJson(object.toString(), collectionType1);  

// ошибка

 com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 267 path $[0].default  

Я ссылался на различные ответы на переполнение стека.. и я узнаю, почему это связано с тем, что сериализатор ожидает, что «по умолчанию» будет следующий формат

 "default":[{ "id":123},{"id":124}]  

но теперь мой вопрос в том, как сериализовать «defalut»:[«123″,»1234»] в массив JSON без каких-либо ошибок,

заранее спасибо.. 🙂

Ответ №1:

Пожалуйста, используйте это для анализа :

Listlt;Stringgt; def вместо JSONArray def