我需要將某個JSON字符串轉(zhuǎn)換為Java對象。我正在使用Jackson進行JSON處理。我無法控制輸入的JSON(我從Web服務讀取)。這是我輸入的JSON:{"wrapper":[{"id":"13","name":"Fred"}]}這是一個簡化的用例:private void tryReading() { String jsonStr = "{\"wrapper\"\:[{\"id\":\"13\",\"name\":\"Fred\"}]}"; ObjectMapper mapper = new ObjectMapper(); Wrapper wrapper = null; try { wrapper = mapper.readValue(jsonStr , Wrapper.class); } catch (Exception e) { e.printStackTrace(); } System.out.println("wrapper = " + wrapper);}我的實體類是:public Class Student { private String name; private String id; //getters & setters for name & id here}我的包裝程序類基本上是一個容器對象,用于獲取我的學生列表:public Class Wrapper { private List<Student> students; //getters & setters here}我不斷收到此錯誤,“包裝”返回null。我不確定缺少什么。有人可以幫忙嗎?org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "wrapper" (Class Wrapper), not marked as ignorable at [Source: java.io.StringReader@1198891; line: 1, column: 13] (through reference chain: Wrapper["wrapper"]) at org.codehaus.jackson.map.exc.UnrecognizedPropertyException .from(UnrecognizedPropertyException.java:53)
3 回答

千巷貓影
TA貢獻1829條經(jīng)驗 獲得超7個贊
您可以使用Jackson的類級注釋:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
@JsonIgnoreProperties
class { ... }
它將忽略您尚未在POJO中定義的每個屬性。當您僅在JSON中查找?guī)讉€屬性并且不想編寫整個映射時,此功能非常有用。有關更多信息,請訪問Jackson的網(wǎng)站。如果要忽略任何未聲明的屬性,則應輸入:
@JsonIgnoreProperties(ignoreUnknown = true)

翻閱古今
TA貢獻1780條經(jīng)驗 獲得超5個贊
第一個答案幾乎是正確的,但是需要的是更改getter方法,而不是字段-字段是私有的(并且不會自動檢測到);此外,如果兩者均可見,則吸氣劑優(yōu)先于字段(也有使私有字段可見的方法,但是如果要使用吸氣劑則沒有什么意義)
因此,getter應該命名為getWrapper(),或使用以下注釋:
@JsonProperty("wrapper")
如果您更喜歡使用getter方法名稱。
添加回答
舉報
0/150
提交
取消