杰克逊小姐自定义反序列化器

4

我需要实现自定义反序列化程序来正确地将JSON解析为Java对象。根据文档中的规定,我需要用我的自定义程序替换默认的JSONReader:

JSON j = JSON.std.with(new MyJSONReader());

但是有两个问题:

  • JSONReader没有默认构造函数;

  • 没有关于如何使用JSONReader的文档。

如何在Jackson jr中创建自定义反序列化程序?

3个回答

2
谢谢Rahim Dastar的回答,但Jackson jr没有JsonDeserializer类。因为Jackson jr是Jackson的简化版本。
在阅读了这个问题后,我想出了一个诀窍。
我使用Map代替我的自定义Java类。然后我使用显式转换自定义setter方法:
//private Data data; - this is desired
private Map<String, Object> data;

public void setData(Object Data) {
        if(data instanceof Map){
            this.data = (Map<String, Object>) data;
        } else {
            this.data = null;
        }
    }

这可以运行,但不是解决方案,因为我有很多类有很多字段。

1

0

我使用这个:

public class IntegerBooleanDeserializer extends JsonDeserializer<Boolean> {

    @Override
    public Boolean deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException
    {
        Integer data = Integer.parseInt(jsonParser.readValueAs(String.class));
        return data == 1 ? true : false;
    }
}

@JsonDeserialize(using = IntegerBooleanDeserializer.class)
    boolean force;

对于布尔类型的自定义序列化器,您可以为每个对象使用此方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接