java - 如何使用 Jackson 将 json 列表反序列化为 java 对象

标签 java android json jackson

尝试将 JSON 字符串映射到 java 类,但它不起作用。使用 jackson 库,这是我的代码。 输入json:

{
   "code":"1",
   "message":"1",
   "result":[
      {
         "serviceid":"13",
         "servicename":"service1",
         "price":"78000",
         "amount":"2048"
      },
      {
         "serviceid":"14",
         "servicename":"service2",
         "price":"118000",
         "amount":"3072"
      }
   ]
}

Java 类:

public class serviceList
{
    public int serviceid;
    public String servicename;
    public double price;
    public int amount;
}

public class serviceList_result
{
    public String code;
    public String message;
    public ArrayList<serviceList> result;

    public serviceList_result()
    {
        result = new ArrayList<serviceList>();
    }

}

我正在使用此代码进行映射

serviceList_result srv= mapper.readValue(jsonInString, TypeFactory.defaultInstance().constructCollectionType(ArrayList.class,serviceList_result.class));

错误:

Can not deserialize instance of java.util.ArrayList out of START_OBJECT

我的代码有什么问题吗?

最佳答案

您的代码中不需要这样做:

serviceList_result srv= mapper.readValue(jsonInString, TypeFactory.defaultInstance().constructCollectionType(ArrayList.class,serviceList_result.class));

这样,您就表示您想要反序列化集合,即 [ ... ]

相反,只需这样做:

serviceList_result srv= mapper.readValue(json, serviceList_result.class);

jackson 库将弄清楚如何从类定义中创建 serviceList_result 对象。

关于java - 如何使用 Jackson 将 json 列表反序列化为 java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36513390/

相关文章:

android - 在android中更改操作栏颜色

java - 使用 Universal Image Loader 加载联系人的 PHOTO_URI

android - 远程跟踪应用程序 (iOS/android) 日志

javascript - 查询 : How to Pass My JSON object from my first script to the second one?

java - org.openqa.selenium.ElementNotVisibleException : Element is not currently visible and so may not be interacted with

java - 如何配置 Orika 以根据上下文将一个类映射到另一个类?

java - 屏幕锁定后定时器重置

java - 可以将tomcat配置为仅加载签名的jar吗

json - spring MockMVC 中是否有一种方法可以将 json 内容作为对象获取?

java - 从 json 文件获取字符串时为 Null