簡體   English   中英

使用Jackson JSON解析為布爾值為TRUE或FALSE

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM