我有两个Java类,我想使用Jackson序列化为JSON:
public class User {
public final int id;
public final String name;
public User(int id, String name) {
this.id = id;
this.name = name;
}
}
public class Item {
public final int id;
public final String itemNr;
public final User createdBy;
public Item(int id, String itemNr, User createdBy) {
this.id = id;
this.itemNr = itemNr;
this.createdBy = createdBy;
}
}
Run Code Online (Sandbox Code Playgroud)
我想将Item序列化为此JSON:
{"id":7, "itemNr":"TEST", "createdBy":3}
Run Code Online (Sandbox Code Playgroud)
用户序列化只包括id.我还可以将所有用户对象serilize为JSON,如:
{"id":3, "name": "Jonas", "email": "jonas@example.com"}
Run Code Online (Sandbox Code Playgroud)
所以我想我需要编写一个自定义序列化器Item并尝试使用它:
public class ItemSerializer …Run Code Online (Sandbox Code Playgroud) 我想知道是否可以根据字段名称自定义json的反序列化
{
id: "abc123",
field1: {...}
other: {
field1: {....}
}
}
Run Code Online (Sandbox Code Playgroud)
在上一个json中,我想在json的任何级别中为名为“ field1”的字段提供一个自定义反序列化器。
原因:我们将数据持久化为JSON,并且有一个REST服务返回该数据,但是在返回数据之前,该服务必须在“ field1”属性中注入额外的信息。
这些类型非常动态,因此我们无法定义Java类来映射json以使用注释。
第一种方法是反序列化为Map.class,然后使用JsonPath搜索$ .. field1模式,但是此过程对于较大的对象而言是昂贵的。
感谢您的帮助。
谢谢,
埃德温·米格尔(Edwin Miguel)