我遇到了一个问题,就是当我使用smart-json将java bean转换为JSON对象时,我发现一些布尔文件丢失了,有些boby可以告诉我为什么吗?谁的代码如下:
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 :(得分:0)
这是一个吸气剂,而#34;是&#34; -er问题:
修改MyBean中的代码,因为我有以下代码段,并更改MiniDevJSONTest类中的布尔值集以匹配&#34; setIsReturn&#34;。您现在将获得您正在寻找的价值。不太熟悉minidev.json类,但是在封面下面似乎有反射,它正在为你的布尔值寻找getter而不是&#34;是&#34; -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中,当你为一个类建立一个class属性时,如果你使用&#34;创建getter和setter&#34;快捷方式,您将看到它自动为大B布尔值创建一个getter,为基本类型创建一个iser。
在尝试找出用于检查类的反射模式时,许多库都使用此标准。但是,您使用的库似乎没有。我测试了它,并期望getter是属性是盒装类型还是原始类型。