为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 JAVA 中忽略 NullNode for deserialization JSON

如何在 JAVA 中忽略 NullNode for deserialization JSON

HUX布斯 2022-09-07 17:56:39
所以问题是下一个:我有POJO,比如:@Data@Accessors(chain = true)@JsonInclude(Include.NON_NULL)public class TestPOJO {  private Long id;  private String name;  private JsonNode jsonNode;我也有json喜欢{   "id":1   "name": "foo"   "jsonNode":null}当我尝试反序列化最后一个ObjectMapper objectMapper = new ObjectMapper();TestPOJO testPojo = objectMapper.readValue(<json String>, TestPOJO.class);我在字段所在的位置获取对象,但我需要在如何修复它?testPojojsonNodeNullNodetestPojo == null
查看完整描述

1 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

添加一个扩展的类,如果为 null,则返回 null:JsonDeserializer<JsonNode>parser.getText()


import com.fasterxml.jackson.core.JsonParser;

import com.fasterxml.jackson.databind.DeserializationContext;

import com.fasterxml.jackson.databind.JsonDeserializer;

import com.fasterxml.jackson.databind.JsonNode;


import java.io.IOException;


public class JsonNodeDeserializer extends JsonDeserializer<JsonNode> {


    @Override

    public JsonNode deserialize(JsonParser parser, DeserializationContext context)

            throws IOException {

        String value = parser.getText();

        if(value == null) {

            return null;

        }

        return (JsonNode) context.findRootValueDeserializer(context.constructType(JsonNode.class)).deserialize(parser, context);

    }

}

然后对属性进行注释,以告诉 Jackson 使用您的自定义反序列化程序:jsonNode@JsonDeserialize(using = JsonNodeDeserializer.class)


@Data

@Accessors(chain = true)

@JsonInclude(Include.NON_NULL)

public class TestPOJO {


  private Long id;

  private String name;

  @JsonDeserialize(using = JsonNodeDeserializer.class)

  private JsonNode jsonNode;


  // getters and setters

}


查看完整回答
反对 回复 2022-09-07
  • 1 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信