2016-07-14 51 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

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