我正在使用Spring RestTemplate與提供JSON的提供的REST服務進行通信。要映射我使用Jaxon的響應,但我會很樂意切換到其他任何可行的方法。將JSON字符串匹配到新的POJO對象
我想創建一個POJO,其中包含交付數據的子內容,但在不同的結構中。
它歸結爲:
來源:{ "a": "val_a", "b" : {"c" : "val_c", "d": "val_d"}}
@JsonIgnoreProperties(ignoreUnknown = true)
class Foo {
// should contains the content of `"a": "val_a"`
// but contains null
private Baa;
// getter and setter
}
@JsonIgnoreProperties(ignoreUnknown = true)
class Baa {
private String a;
// getter and setter
}
// This should be the operation that is done internally by Spring when calling
// ResponseEntity<Foo>response = restTemplate.exchange(url, HttpMethod.GET, entity, Foo.class);
// response.getBody();
private Foo read(String s) {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
return mapper.readValue(s, Foo.class);
}
反序列化的結果是一個空巴阿對象。實際的JSON和POJO對象結構更復雜,但總結起來。
任何實現此目的的技術都會受到歡迎。 我提出的唯一可能性是在提供的結構中反序列化JSON並編寫一個生成所需對象的Converter類,但我希望避免這種情況。
-----更新/說明------ 問題是,屬性a應該映射到類Baa中,該屬性位於Foo內,但在根路徑中提供(這是正確的)提供的JSON對象
我使用傑克遜和使用ObjectMapper - 通常我發現寫對象更容易,然後生成輸出的json。調整並重復 –
我會推薦使用gson。 –