Java中net.sf.json包关于JSON的坑

某些情况下该jar包JSON会将"[]"包围的字符串转化为数组,代码如下:

JSONObject j = new JSONObject();
j.put("aa","[abc88]");
j.put("bb","[88abc]");
j.put("cc","[+abc]");
j.put("dd","[-abc]");
j.put("ee","[.abc]");
j.put("ff","[a-bc]");
j.put("gg","[a.bc]");
j.put("hh","[a+bc]");
j.put("ii",".abc]");
j.put("jj","[.abc");
System.out.println(j);

输出结果:

{"aa":"[abc88]","bb":["88abc"],"cc":["+abc"],"dd":["-abc"],"ee":[".abc"],"ff":"[a-bc]","gg":"[a.bc]","hh":"[a+bc]","ii":".abc]","jj":"[.abc"}

可以观察到:

 原本的字符串变成了数组,这种就可能导致代码有bug。

究其原因,看json源代码对比可以发现:

走(b < '0' || b > '9') && b != '.' && b != '-' && b != '+' 这个判断的直接抛异常,返回正常字符串,其它的会正常执行,添加到数组里,所以变成了数组。

解决方式:1.JSON换成map,或者换jar包 fastjson或者gson,这里推荐map或者gson,fastjsonbug也比较多。

2:把]"替换成] ",加个空格,字符串不以]结尾。

以上:记录这次JSON的坑,和解决方式。供参考。

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值