2017-03-29 9 views
0

JSONをキー変数ジャクソンマップObjectMapperを持っているJSON:デシリアライズ

{ 
    "id": "1704", 
    "title": "Choice of Drink", 
    "multiselect": 0, 
    "maximum_selection": 1, 
    "ac_items": 1, 
    "Choice of Drink": [{ 
     "id": "8151", 
     "name": "Lemon Ice Tea", 
     "price": 0, 
     "orig_price": 0 
    }, { 
     "id": "8152", 
     "name": "Fresh Lime", 
     "price": 0, 
     "orig_price": 0 
    }] 
} 

問題は、キー「飲み物の選択肢は」variable.Howが、私は@JsonPropertyでこれを置くことができるということであるとき、I名前がない?

+0

変数かかることがあります?それらの1つは飲み物の選択肢です。 –

+0

Jacksonはダイナミックキーを 'Map >'にパーズします。 – nbokmans

+0

@AishwaryaTiwariいいえ、サンプルでは –

答えて

0

あなたは一つの方法にすべての変数のキーを指示するためにジャクソンの@JsonAnySetterアノテーションを使用することができ、そこにあなたが望むようにそれらを扱う/割り当てることができます。

public class Bar 
{ 
    // known/fixed properties 
    public String id; 
    public String title; 
    public int multiselect; 
    public int maximum_selection; 
    public int ac_items; 

    // unknown/variable properties will go here 
    @JsonAnySetter 
    public void setDrinks(String key, Object value) 
    { 
     System.out.println("variable key = '" + key + "'"); 
     System.out.println("value is of type = " + value.getClass()); 
     System.out.println("value toString = '" + value.toString() + "'"); 
    } 
} 

をした場合にはサンプル入力の場合、出力は次のようになります。

variable key = 'Choice of Drink' 
value is of type = class java.util.ArrayList 
value toString = '[{id=8151, name=Lemon Ice Tea, price=0, orig_price=0}, {id=8152, name=Fresh Lime, price=0, orig_price=0}]' 
+0

ありがとう@シャロン!!この仕事は魅力が好きだった。 –

0

試してみてください。この

Gson gson = new Gson(); 
Type mapType = new TypeToken<Map<String,Map<String, String>>>() {}.getType(); 
Map<String,Map<String, String>> map = gson.fromJson(jsonString, mapType); 
+0

ジャクソンを使用してください。 –