【问题标题】:Gson deserialize not working properlyGson 反序列化无法正常工作
【发布时间】:2014-07-08 14:58:58
【问题描述】:

我有一个格式如下的 jsonarray:

String jsonArray = {"myList":[{"code":"01","price":"2,3", "date":"21/12/2014"},{"code":"02","price":"3,4", "date":"26/12/2014"}]}

我的列表类是:

public class MyList {
    private String code;
    private String price;
    private String date;

    //..getter and setter
}

我的非工作“反序列化器”如下:

ObjectMapper objectMapper = new ObjectMapper();
List<MyList> list = new ObjectMapper().readValue(jsonArray, new TypeReference<List<MyList>>() { });

捕获以下异常:

       org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token

我该如何解决? 提前致谢!

【问题讨论】:

  • 我想说你必须将"myList" 的值传递给映射器而不是根对象 - 或者可能是根对象加上提取"myList" 的信息(我不知道Gson 很好)。
  • 已解决,看我的解决方案,希望是最佳实践

标签: java json list mapping deserialization


【解决方案1】:

这是我自己使用 Gson 的工作解决方案:

String jsonArray = {"myList":[{"code":"01","price":"2,3", "date":"21/12/2014"},{"code":"02","price":"3,4", "date":"26/12/2014"}]}

Gson gson = new Gson();
JsonParser parser = new JsonParser();

List<MyList> list = new ArrayList<MyList>();
try {
    JsonArray jArray = (JsonArray) parser.parse(jsonArray).getAsJsonObject().get("myList");

    for (JsonElement jObj : jArray) {
            MyList item = gson.fromJson( jObj , MyList.class);
            list.add(item);
    }

    } catch (Exception e) {
        e.printStackTrace();
    }

希望对其他用户有用!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 2018-07-04
    • 2011-06-01
    相关资源
    最近更新 更多