net.sf.json的JSONObject对象的put方法的键值对的value值为“null”字符串的坑和错误

项目场景:

一个springmvc老项目的接口返回,使用net.sf.json的json包(一个十年前就停止更新维护的包),使用JSONObject对象的put方法来组装数据的。


问题描述

如果要组装的数据中有类似于value值为“null”字符串的,net.sf.json就会自动转换为它自己定义的JSONNULL对象,这会使springmvc的控制器返回数据时报错,报500,服务器异常错误,准确来说应该是在controller返回数据后,spring框架在解析数据的包的错。

大概的伪代码:
	public void run() {
		list<JSONObject> list=
		JSONObject obj
		obj.put("key","null")
		list.add(obj)
	}

原因分析:

sping对JSONNULL这个类型的数据无法正常转化。


解决方案:

一:网友推荐使用fastjson
二:不使用jsonobject对象形式来组装数据,把所有需要的数据分装到java的类中。因为是一个老项目,其中代码有很多的魔鬼字符串等的问题。最终使用java对象的方式来避免此问题
三:可以自定义spring中objectmap,在JSON序列化的时候,使用自定义方式(这是组内一位大佬提出来的)这种方案可以解决目前框架所有的这种问题。也给我提供了思考问题的一种方式。打开了新世界的大门,深刻认识到了自己和结构师的区别在哪里。

还需要好好成长。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值