2015-07-01 21 views
1

我意識到這可能已經被問了上百次了,但是我搜索了很多,並且找不到具體的東西。Java JSON反序列化沒有預先定義好所有的東西

這是我想要的。給定一個字符串data,我想反序列化一個對象obj,它沒有預定義所有的字段。我希望能夠詢問我想要的字段,如obj.getString("stringFieldName")obj.getInt("intFieldName")。我已經把gson用於其他的東西,所以如果gson可能會很棒,但不會反對使用另一個庫。

+0

[This](http://stackoverflow.com/questions/2525042/how-to-convert-a-json-string-to-a-mapstring-string-with-jackson-json)可能會有所幫助。 –

+0

@ user2864740 JSON處理的事實標準是傑克遜。我從來沒有見過任何人直接使用JEE API。這麼多的標準:) –

回答

3

「標準」Android JSON庫(自API 1開始)已經提供了這種無類型訪問。

參見JSONObject,例如。 getInt

如果存在並且是一個int,或者可以強制爲一個int,或者以其他方式拋出,則返回通過名稱映射的值。

除非需要將JSON映射到「本地」Java集合類型,否則這可能是實現請求的最簡單方法。它不需要任何額外的庫。

0

您是否嘗試過使用Square的Retrofit?它可以與GSON和Java Annotations一起使用,並且它非常易於設置。

1

與傑克遜庫,您可以註釋數據模型類

@JsonIgnoreProperties(ignoreUnknown = true) 

和jacksonconverter只會解析只有這些你定義的字段。其他將被忽略。

相關問題