我不知道這是在GSON使用默認TypeAdapter.BOOLEAN
預期的行爲與否,而不是隻做true
和false
(以及絃樂"true"
和"false"
)反序列化時是有效的布爾值,但這樣做TRUE
和FALSE
(和他們的字符串版本),True
和False
(及其字符串版本)和TrUe
和fAlSe
(及其字符串版本),以及任何想要嘗試的案例。另外,因爲TypeAdapter
依賴於Java的Boolean.parseBoolean()
,所以非空字符串"true"
變成false
。在Gson中,如何將布爾值限制爲true和false(而不是TrUe和fAlSe)?
我正在寫一個TypeAdapter
,我想只允許true
和false
是可以接受的布爾值,但我無法弄清楚如何判斷價值,我要讀的是true
或True
或TRUE
或tRuE
,因爲我只能撥打nextBoolean()
,它會爲所有這些返回相同的值。
是否有任何方法獲取原始值,以便我可以檢查它是否是有效的小寫格式或我是否運氣不好?
爲什麼你叫一些變化'nextBoolean()'如果下一個對象是String ?你不能得到字符串,並制定邏輯? – lubilis
默認的'TypeAdapter.BOOLEAN'接受一個裸的,不加引號的值或一個String(顯然是爲了向後兼容)。如果我沒有引用該值並且放入'true'或'TRUE'或'True'或'tRuE','JsonReader.peek()'返回'JsonToken.BOOLEAN',我只能調用'nextBoolean()'來獲得價值。試圖調用'nextString()'會引發異常。換句話說,我無法想出一個不接受奇怪裝箱布爾人的方法。 – TOB
當然,我可以爲布爾編寫我自己的'TypeAdapter'。我必須實現'public Boolean read(JsonReader in)'。我的問題是'JsonReader'沒有提供任何公開的方式來區分'true'和'TRUE'之間的區別,並且由於這是我在編寫'TypeAdapter'時唯一可以訪問的東西,所以我無法區分它們之間的區別它們之間。 – TOB