2017-12-05 16 views
1

私は既知のフィールド(例えばAとBのString型)といくつかの未知のフィールド(fooとbar、そして多分何か他のものそのうち、unknownと入力してください)。JSONとJAVAの混在した既知の/未知のフィールドを持つ

[ 
    {"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に解析する必要があります。 ジャクソンはこのJSONをJsonNodeに解析することができますが、JsonNodeは膨大な量のデータを処理するにはあまりにも多くのメモリを使います。 これを実行するソリューションはありますか?私はこのようなクラスのインスタンスを取得する必要があります。

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

JSONの構造を変更できますか? –

+0

このJSONを文字列として取得しているので、有効な場合は可能です。 JSONは約1〜5 MBです –

答えて

1

あなたは@JsonAnySetterメソッドアノテーションでPOJOを使用することができます。また、必要に応じて実際にこの方法で計算/最適化を実行することもできます。

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 
} 
関連する問題