2016-07-14 53 views
0

我遇到了一個問題,當我使用smart-json將java bean轉換爲JSON對象時,我發現一些布爾字段丟失了,可以讓一些boby告訴我爲什麼?該誰代碼如下所示:java bean boolean提交給json&boolean vs布爾

package com.huoli.crawler.test; 

import java.util.HashMap; 
import java.util.Map; 

import net.minidev.json.JSONObject; 


public class MiniDevJSONTest { 
public static void main(String[] args) { 
    MyBean mybean = new MyBean(); 
    mybean.setReturn(true); 
    mybean.setArrivingAirportCode("dadsa"); 
    Map<String, MyBean> map = new HashMap<>(); 
    map.put("mybean", mybean); 
    // output smart-json:{"mybean":{"arrivingAirportCode":"dadsa"}} 
    // so where is isRetrun ?? 
    System.out.println("smart-json:" + JSONObject.toJSONString(map)); 

} 

}

class MyBean { 
private boolean isReturn; 

public boolean isReturn() { 
    return isReturn; 
} 

public void setReturn(boolean isReturn) { 
    this.isReturn = isReturn; 
} 

private String arrivingAirportCode; 

public String getArrivingAirportCode() { 
    return arrivingAirportCode; 
} 

public void setArrivingAirportCode(String arrivingAirportCode) { 
    this.arrivingAirportCode = arrivingAirportCode; 
} 

}

我的問題是,爲什麼布爾字段的值丟失?

回答

0

這是一個getter與「是」 -er問題:

修改爲myBean你的代碼,因爲我有下面的代碼片段,並更改設置布爾在你MiniDevJSONTest類匹配「setIsReturn」。你現在將得到你正在尋找的價值。不是很熟悉minidev.json類,但是看起來反射在封面下面尋找你的布爾值的getter而不是「is」-er。因爲它沒有找到它,所以它就像它不存在。

我在其他庫中看到過這種行爲。在某些庫中,代碼根據所尋找的布爾值是基元還是完全裝箱類型來查找is-er或getter變化。

public class MyBean { 
    private boolean isReturn; 
    private String arrivingAirportCode; 

    public boolean getIsReturn() { 
    return isReturn; 
    } 

    public void setIsReturn(boolean isReturn) { 
    this.isReturn = isReturn; 
    } 

    public String getArrivingAirportCode() { 
    return arrivingAirportCode; 
    } 

    public void setArrivingAirportCode(String arrivingAirportCode) { 
    this.arrivingAirportCode = arrivingAirportCode; 
    } 
} 

只是多了幾分後續:

在Eclipse中,當你建立一個類屬性的一類,如果你使用了「創建getter和setter」的快捷方式,你會看到,它會自動創建一個大B布爾的getter,以及原始類型的is-er。

許多圖書館在試圖找出用於檢查課程的反射模式時使用此標準。但是,看起來你正在使用的庫不是。我測試了它,並且期望getter屬性是盒裝類型還是基元。

+0

嗨,大家非常感謝,我完全明白了。 –