[英]TRUE or FALSE into boolean using Jackson JSON parsing
我正在使用Jackson注釋將JSON響應解析為POJO對象。我在POJO中使用布爾變量來映射來自JSON的值“true”和“false”。 但突然之間,我們將JST中的值變為“TRUE”和“FALSE”,並解析了這些值的失敗。 任何人都可以建議將它映射到布爾值的方法,因為這個變量被用在很多地方,我不想將邏輯更改為String到Boolean。
這不是一個真正的問題,這基本上是BeanUtils的工作方式。
對於boolean
瓦爾,傑克遜刪除is
從模子名獲得哪些,預計變量名編組,以JSON時候要,並增加了set
於同一來源的名稱來解組回POJO。
所以boolean isFooTrue;
當編組到JSON時結束為fooTrue
,並且當解組時它將嘗試調用setIsFooTrue();
,這是不正確的。
如果您正在使用IDE並且生成了getter / setter,那么您可能會注意到生成的boolean isFoo;
代碼boolean isFoo;
基本上忽略了is
好像var名稱只是foo
:
private boolean isFoo;
public boolean isFoo() {
return isFoo;
}
public void setFoo(boolean isFoo) {
this.isFoo= isFoo;
}
有兩個選項is
從var名稱中刪除is
,或者將is
添加到setter名稱。
我不確定這是你想要的。 但它的確有效。
Boolean param = Boolean.parseBoolean((String)yourValue);
經過測試的代碼是
public class program10 {
public static void main(String args[]) {
String yourValue = "TRUE"; // This is what you get from json.
Boolean param = Boolean.parseBoolean((String)yourValue);
if(param == true)
System.out.println("Value is true");
else
System.out.println("Value is false");
System.out.println(param);
}
}
我還遇到了使用Jackson Parser 1.8.5的類似問題。 Java POJO到JSON工作但JSON回到Java POJO沒有。 在Java POJO中,如果布爾變量聲明為
private Boolean isMyVar;
然后傑克遜產生等效的JSON
{..,
"myVar" : false,
..
}
(我知道布爾變量命名在這里是錯誤的,但是JAR是第三方,並說你不能改變它!)
我認為這是Jackson解析器設計用於處理布爾值的方式的問題。 我將JSON從“myVar”更改為:false為“isMyVar”:false並且可以從JSON創建Java POJO。
有誰知道這仍然是一個錯誤還是已經解決了?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.