我正面临着json转换异常。我将json转换为java对象。
这是我的json
[
{
"PrefrenceId":"228f176d-d224-32d7-9bb5-6287a06a68e8",
"UserId":"327e6c64-bc90-3ae8-8f7d-72837581ca13",
"QuestionnaireId":"41f31b11-47f5-3e29-8c88-1a3615c978a7",
"Suggestions":"",
"Explanation":"",
"IsActive":true,
"IsDelete":false,
"DateCreated":"2016-11-01 09:53:00.000",
"DateUpdated":"2016-11-01 09:53:17.000"
},
{
"PrefrenceId":"52a74739-bdd3-33ac-a83f-72f60b1992b5",
"UserId":"327e6c64-bc90-3ae8-8f7d-72837581ca13",
"QuestionnaireId":"8cd5ac8e-89db-3d7b-bb2d-4e6735b245de",
"Suggestions":"",
"Explanation":"",
"IsActive":true,
"IsDelete":false,
"DateCreated":"2016-11-01 09:48:53.000",
"DateUpdated":"2016-11-01 09:53:15.000"
},
{
"PrefrenceId":"ae7fc877-b26a-34d3-a5f3-244c7e777e08",
"UserId":"327e6c64-bc90-3ae8-8f7d-72837581ca13",
"QuestionnaireId":"d3b98cde-111c-30d5-a4c9-412a76b656eb",
"Suggestions":"Camping",
"Explanation":"",
"IsActive":true,
"IsDelete":false,
"DateCreated":"2016-11-01 09:53:02.000",
"DateUpdated":"2016-11-01 09:53:19.000"
},
{
"PrefrenceId":"bcac0da7-31a6-345f-be82-ddff17c29b35",
"UserId":"327e6c64-bc90-3ae8-8f7d-72837581ca13",
"QuestionnaireId":"8fb1bda7-7ec8-3538-8aa8-ff84637764a4",
"Suggestions":"",
"Explanation":"",
"IsActive":true,
"IsDelete":false,
"DateCreated":"2016-11-01 09:53:07.000",
"DateUpdated":"2016-11-01 09:53:22.000"
},
{
"PrefrenceId":"ff46ce3c-70cb-3d25-8dbb-10e9c46d4c2d",
"UserId":"327e6c64-bc90-3ae8-8f7d-72837581ca13",
"QuestionnaireId":"3afffc17-30e4-311f-a0fc-8daa3bda6c98",
"Suggestions":"",
"Explanation":"",
"IsActive":true,
"IsDelete":false,
"DateCreated":"2016-11-01 09:53:05.000",
"DateUpdated":"2016-11-01 09:53:20.000"
}
]
我的POJO课程: -
public class SurvivorZAMQuestionList implements Serializable {
public List<SurvivorZAMQuestionnaire> survivorZAMQuestionnaires;
}
public class SurvivorZAMQuestionnaire implements Serializable {
public String Suggestions;
public String PrefrenceId;
public String IsActive;
public String IsDelete;
public String DateCreated;
public String DateUpdated;
public String UserId;
public String QuestionnaireId;
public String Explanation;
}
但是当我将json响应转换为json时,它显示以下错误: - com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_OBJECT但在第1行第2列为BEGIN_ARRAY
任何人都可以告诉我在pojo课程中我缺少什么。 应该赞赏任何类型的举行。
答案 0 :(得分:2)
您的回答是正确的,但您的解析不正确。所以首先在gradle文件中添加GSON。
compile 'com.google.code.gson:gson:2.4'
现在使用您的代码下方来解析您的回复
try {
JSONArray array = new JSONArray("put your response here");
Gson gson = new Gson();
for (int i = 0 ; i <array.length();i++)
{
SurvivorZAMQuestionnaire obj = new SurvivorZAMQuestionnaire();
obj.add(gson.fromJson(array.getJSONObject(i).toString(),SurvivorZAMQuestionnaire.class));
}
} catch (JSONException e) {
e.printStackTrace();
}
在列表中添加你的obj并显示它:)
答案 1 :(得分:1)
错误明确指出Gson接受JsonObject
而非JsonArray
。在您的情况下,您可以将回复JsonArray
放入JsonObject
,其中包含JsonArray
的密钥,并在annotation
中将该密钥设为SurvivorZAMQuestionList
。通过这种方式,您可以轻松地对此问题进行排序。
希望这有用:)
答案 2 :(得分:0)
您可以尝试使用GSON库 - &gt; compile 'com.google.code.gson:gson:2.8.0'
List<SurvivorZAMQuestionnaire> survivorZAMQuestionnaires;
...
Gson gson = new Gson();
Type listType = new TypeToken<List<SurvivorZAMQuestionnaire>>(){}.getType();
survivorZAMQuestionnaires = gson.fromJson(jsonString, listType);
Type
是java.lang.reflect.Type;
答案 3 :(得分:0)
以这种方式解析你的Json,
List<SurvivorZAMQuestionnaire> survivorZAMQuestionnaires = new Gson().fromJson(json, new TypeToken<List<SurvivorZAMQuestionnaire>>() {
}.getType());
答案 4 :(得分:0)
执行gson的gradle依赖。
compile 'com.google.code.gson:gson:2.4'
像这样更新代码;
private void parseJSON(String jsonMessage) throws JSONException {
if (jsonMessage.startsWith("[")) {
Type type = new TypeToken<List<SurvivorZAMQuestionnaire>>()
}.getType();
List<SurvivorZAMQuestionnaire> survivorZAMQuestionnaireList =new Gson().fromJson
(jsonMessage, type);
Log.d("Print List",survivorZAMQuestionnaireList.toString());
}
}
答案 5 :(得分:0)
您需要对象列表不仅是对象,因为您的JSON包含对象列表。 How to Parse JSON Array in Android with Gson