java - 如何在序列化/反序列化 JSON 时删除一类实例?

标签 java json serialization deserialization fasterxml

我使用fasterxml 来序列化/反序列化JSON

public class A {
    String field;
    B b;
}

public class B {
    int n;
}

我想得到这样格式的JSON

{
  "field": "abc",
  "n": 123
}

这可能吗?

最佳答案

您可以使用 Jackson 注释来提供特定的反序列化器。

@JsonDeserialize(using = ADeserializer.class)
public class A {

    private String field;
    private B b;

    // ...
}

你的类型的反序列化器应该是这样的

public class ADeserializer extends JsonDeserializer<A> {

    @Override
    public A deserialize(JsonParser p, DeserializationContext ctx) throws IOException {
        ObjectCodec codec = p.getCodec();
        JsonNode node = codec.readTree(p);

        String field = node.get("field").asText();
        int n = node.get("n").asInt();

        A a = new A();
        B b = new B();

        b.setN(n);

        a.setField(field);
        a.setB(b);

        return a;
    }

}

对于序列化,可以使用自定义序列化器。就是这样。

关于java - 如何在序列化/反序列化 JSON 时删除一类实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41768897/

相关文章:

ios - 如何获取 json 数据中显示在 TableView 中的标题计数

json - 如何在 scala play 框架中解析一个 json 数组?

java - Xml 到 JSON 单值数组处理

java - Spring XML View 解析器配置

java - 如何告诉 Spring Boot 将哪个主类用于可执行 jar?

ios - 如何为本地通知创建后台服务?

java - Text.getBytes() 返回意外结果

java - 如何读取 Java 中序列化对象的大小(以字节为单位)?

java - 比较java中的字符串并删除字符串中相同的部分

java - C#AES256加密Java解密时如何处理BadPaddingException