永远_不会懂
2016-09-09 08:46
采纳率: 33.3%
浏览 9.3k

使用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条回答 默认 最新

  • 觅夜的黑 2016-09-09 09:02

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

    评论
    解决 无用
    打赏 举报
  • Kainnnn 2016-09-09 09:05

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

    评论
    解决 无用
    打赏 举报
  • 一个程序猿子 2016-09-09 09: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 2016-09-09 10:33

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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题