2017-07-14 31 views
0

我有類似這樣反序列化傑克遜動態密鑰值

{ 
    "Byc-yes": { // < code 
    "Updated": "week", // < period 
    "Time": "12pm" // < time 
    }, 
    "Uop-thp":{ 
    "Updated": "week", 
    "Time": "12pm 
    } , 
    ... 

我想將它反序列化到Java類

class Updating { 
    private String code; 
    private String period; 
    private String time; 
} 

有任何本地JACKSON映射器要做到這一點,或將一個JSON結構我需要爲此創建自己的自定義解串器?

回答

1

我會將它讀作Map.class,然後遍歷鍵集來提取值。

ObjectMapper objectMapper = new ObjectMapper(); 
    Map map = objectMapper.readValue(s, Map.class); 
    for (Object o : map.keySet()) { 
     String key = (String) o; 
     System.out.println(key);//prints Byc-yes for first 
     Map<String, String> value = (Map<String, String>) map.get(key); 
     System.out.println(value); //prints {Updated=week, Time=12pm} for first 
     Updating updating = new Updating(key, value.get("Updated"), value.get("Time")); 
     System.out.println(updating); 
    } 

假設UpdatedTime是固定鍵。

+0

明白了。我忘記了我正在使用unirest獲取請求。這種方式仍然有效?上面的 – c0nf1ck

+0

應該工作,只要你得到一個有效的JSON – Mritunjay