2 u013468915 u013468915 于 2016.09.09 16:46 提问

使用JSONObject的fromObject方法转换成JsonObject对象时

使用JSONObject的fromObject方法转换成JsonObject对象时,在对象中有Date类型的属性,且值为null,然后就报空指针异常了
net.sf.json.JSONException: java.lang.NullPointerException
at net.sf.json.JSONObject._fromBean(JSONObject.java:987)
at net.sf.json.JSONObject.fromObject(JSONObject.java:168)

4个回答

u013829202
u013829202   Rxr 2016.09.09 17:02

为null肯定就报空指针错误啊。骑驴找驴啊。

qq_33891719
qq_33891719   2016.09.09 17:05

可以了解一下Gson 用于数据的json转换

zhuzige521888
zhuzige521888   2016.09.09 17:49

1.首先null的话是不能使用JSONObject.fromObject()方法的,要想办法避免这种情况!
2.然后提供一个方法,list和单个的object(包含日期)都可以转为json.方法如下:

public static String coverToJson(Object object) {
if (object == null) {
return null;
}
JsonConfig config = new JsonConfig();
config.registerJsonValueProcessor(java.sql.Date.class, new DateJsonValueProcessor("yyyy-MM-dd"));
config.registerJsonValueProcessor(Timestamp.class, new DateJsonValueProcessor("yyyy-MM-dd HH:mm:ss"));
config.setJsonPropertyFilter(new PropertyFilter() {
public boolean apply(Object source, String name, Object value) {
if (((source instanceof LazyInitializer)) || ((value instanceof LazyInitializer)))
return true;
if ((!Hibernate.isInitialized(source)) || (!Hibernate.isInitialized(value)))
return true;
return false;
}
});
if ((object instanceof List)) {
return JSONArray.fromObject(object, config).toString();
}
return JSONObject.fromObject(object, config).toString();
}

new_culture
new_culture   2016.09.09 18:33

在 json中是不支持时间数据的,你要把时间做特殊处理/。

Csdn user default icon
上传中...
上传图片
插入图片