当前位置: 首页 > 知识库问答 >
问题:

java中使用ObjectMapper的Jackson序列化

池宸
2023-03-14

我想使用对象映射器序列化不同类型的列表,但我不知道如何一次将不同类型的列表对象传递到对象映射器中。以下是我的代码:

AccountingService accService      = ServiceFactory.getAccountingService();
List<TaxCategory> taxCategoryList = accService.getAllTaxCategories();
ProductService productService     = ServiceFactory.getProductService();
List<SimpleUom> simpleUomList     = productService.getSimpleUomsList();

ObjectMapper objMapper;
objMapper.writeValueAsString(?)--

你能建议我应该通过什么吗?在上面的代码中。这是因为我必须将jackson序列化的字符串作为jsp中的一个字符串包括上面的列表,并解析该字符串以获得在客户端使用的单个列表。

共有1个答案

伯英锐
2023-03-14

只需尝试:

ObjectMapper objMapper = new ObjectMapper();
String jsonString = objMapper.writeValueAsString(simpleUomList);

根据评论进行编辑:

您需要创建一个类来包装您的两个列表,然后编写它:

public class MyLists {
    private List<TaxCategory> taxCategoryList;
    private List<SimpleUom> simpleUomList;
    // + constructor, getters and setters
}

ObjectMapper objMapper = new ObjectMapper();
MyLists myLists = new MyLists(taxCategoryList, simpleUomList);
String jsonString = objMapper.writeValueAsString(myLists);
 类似资料:
  • 我正在编写一个Java spring boot mvc应用程序,它可以导出/导入数据。我写了一个包装类,它应该为学生类序列化/反序列化数据。它适用于导出,但在导入过程中出现错误 下面是我的maven jackson依赖项: 最后是转换的方法: 上面提到了Mapper.ReadValue(stream,typeReference)处的MismatchInputException ObjectMapp

  • 我正在使用JavaSpring-boot RestController。我有一个示例GET API,在其中我将LocalDateTime.now()发送到响应正文中。我已经自定义了Jackson ObjectMapper来注册jackson-datatype-jsr310模块,但是它无法序列化LocalDateTime实例。我尝试了许多不同的在线解决方案,但是似乎都不起作用。下面提到了我在这里发布

  • 问题内容: 的功能需要Class。但是,如果我内部传递的类将某些接口作为数据成员,该如何使用它。 尽管我可以理解此异常的原因,因为杰克逊没有获得所传递类的内部接口的具体类,但我的问题是如何解决它?那我该如何反序列化呢?我要反序列化的类是: 这是一个接口,所以这给了我以下错误:- 问题答案: 杰克逊显然不能构造对象,因为它是一个接口。您将需要在json和ObjectMapper中具有其他信息,以告诉

  • 我得到了。了解调用相同的反序列化器。是否有一种方法可以在custome反序列化器中使用或?

  • 使用Dropwizard框架构建API,我使用Jackson ObjectMapper遇到了这个反序列化问题。我同时使用Joda Time和Joda Money。对于JodaTime,定义JodaModule足以解决反序列化问题。但对于JodaMoney来说,JodaModule不足以解决反序列化问题(如果我错了,请纠正我)。因此,我为JodaTime保留了JodaModule,创建了JodaMo

  • 问题内容: 我正在使用 ObjectMapper 进行java-json映射。 这是我的java类: 这就是我得到的: 所以我现在的问题是,如何获得此json输出: 我想要它与我的Java声明中的顺序相同。有没有办法指定它?也许带有注释或类似的东西? 问题答案: