在JAVA中使用混合的已知/未知字段解析JSON

时间:2017-12-05 06:11:00

标签: java json parsing jackson pojo

我有简单的JSON结构,包含已知字段(例如A和B,键入为String)和一些未知字段(foo和bar,可能是其他字段,或者没有字段,类型未知)。

[
    {"A": "Value for A", B: "Value for B", "foo": "foo"},
    {"A": "Value for A", B: "Value for B", "bar": 13},
    {"A": "Value for A", B: "Value for B", "foo": "foo", "val": true}
]

我需要将此JSON解析为POJO。 Jackson允许将这个JSON解析为JsonNode,但是JsonNode在大量数据上占用了太多内存。 有没有解决办法呢?我需要像这样得到类的实例:

class Simple
{
    public String A;
    public String B;
    public HashMap others;
}

1 个答案:

答案 0 :(得分:1)

您可以将POJO与@JsonAnySetter方法注释一起使用。如果需要,您甚至可以在此方法中执行计算/优化。

public class Simple {
    private String A;
    private String B;
    private Map other = new HashMap<String,Object>();

    // "any getter" needed for serialization    
    @JsonAnyGetter
    public Map any() {
        return other;
    }

    // "any setter" needed for deserialization  
    @JsonAnySetter
    public void set(String name, Object value) {
        other.put(name, value);
    }

    // getter and setter for A and B
}