JSON转换异常到java对象

时间:2016-11-10 07:23:05

标签: android

我正面临着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课程中我缺少什么。 应该赞赏任何类型的举行。

6 个答案:

答案 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);

Typejava.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