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序列化的时候,使用自定义方式(这是组内一位大佬提出来的)这种方案可以解决目前框架所有的这种问题。也给我提供了思考问题的一种方式。打开了新世界的大门,深刻认识到了自己和结构师的区别在哪里。

还需要好好成长。。。

posted @   doufei  阅读(101)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示