json-lib的字符串自动转换坑

一、场景复现

(1)代码

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import net.sf.json.JSONObject;public class C {public static void main(String[] args){JSONObject json = new JSONObject();json.put("str0","hello");json.put("str1","\"hello\"");json.put("str2"," \"hello \" ");json.put("str3","\"hello \"\n");json.put("jsonObj0","{\"count\":\"23\"}");json.put("jsonObj1","{\"count\":\"23\"}\n");json.put("jsonObj2"," {\"count\":\"23\"} ");json.put("jsonObj3","{\"count\":\"23\",size:2}");json.put("jsonObj4","{\"count\":\"23\",size:}");json.put("jsonArr0","[1,2]");json.put("jsonArr1"," [1,2]");json.put("jsonArr2","[1,2]\n");json.put("jsonArr3","\"[1,2]\"");json.put("jsonArr4","[1,2,-]");json.put("jsonArr5","[1,2,A]");System.out.println(format(json.toString()));}public static String format(String json) {JsonParser jsonParser = new JsonParser();JsonObject jsonObject = jsonParser.parse(json).getAsJsonObject();Gson gson = new GsonBuilder().setPrettyPrinting().create();return gson.toJson(jsonObject);}}
    <dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.5</version></dependency>

(2)输出

json-lib-2.3输出:

<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.3</version><classifier>jdk15</classifier>
</dependency>
{"str0": "hello","str1": "hello","str2": " \"hello \" ","str3": "\"hello \"\n","jsonObj0": {"count": "23"},"jsonObj1": "{\"count\":\"23\"}\n","jsonObj2": " {\"count\":\"23\"} ","jsonObj3": {"count": "23","size": 2},"jsonObj4": "{\"count\":\"23\",size:}","jsonArr0": [1,2],"jsonArr1": " [1,2]","jsonArr2": "[1,2]\n","jsonArr3": "[1,2]","jsonArr4": [1,2,"-"],"jsonArr5": "[1,2,A]"
}

json-lib-2.4输出:

<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier>
</dependency>
{"str0": "hello","str1": "\"hello\"","str2": " \"hello \" ","str3": "\"hello \"\n","jsonObj0": {"count": "23"},"jsonObj1": "{\"count\":\"23\"}\n","jsonObj2": " {\"count\":\"23\"} ","jsonObj3": {"count": "23","as": 2},"jsonObj4": "{\"count\":\"23\",as:}","jsonArr0": [1,2],"jsonArr1": " [1,2]","jsonArr2": "[1,2]\n","jsonArr3": "[1,2]","jsonArr4": [1,2,"-"],"jsonArr5": "[1,2,A]"
}

(3)异常现象

字符串"\"xx\""转换成"xx","{\"key\":value}"转成{"key":value}对象,"[value,vlaue]""转成[value,vlaue]对象

json-lib版本不同:json-lib-1.3把"\"xx\""转换成"xx","{\"key\":value}"转成{"key":value}对象,"[value,vlaue]""转成[value,vlaue]对象

json-lib-1.4的"\"xx\""不转换,而"{\"key\":value}"转成{"key":value}对象,"[value,vlaue]""转成[value,vlaue]对象

 

二、原因

json-lib与Gson等其他JSON库不一样,会默认将json字符串(包含双引号字符串)转换json对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JoyOI(TYVJ)1061-Mobile Service【线性dp】

正题 题目链接:http://www.joyoi.cn/problem/tyvj-1061 题目大意 有n个点&#xff0c;每个点之间都有权值不同的边&#xff0c;有3个机器人&#xff0c;有m个任务地点&#xff0c;机器人必须按顺序赶到任务地点&#xff0c;求最小代价。 解题思路 我们可以让fi,jfi,j表示两个…

开源分享 Unity3d客户端与C#分布式服务端游戏框架

很久之前&#xff0c;在博客园写了一篇文章&#xff0c;《分布式网游server的一些想法语言和平台的选择》&#xff0c;当时就有了用C#做网游服务端的想法。写了个Unity3d客户端分布式服务端框架&#xff0c;最近发布了1.0版本&#xff0c;取名ET框架。ET框架的目标就是简化客户…

freemarker中遇到null报错的处理方法

错误分析 今天遇到了这样的个问题&#xff0c;就是在获取分类的父id的时候发现如果是父级分类&#xff0c;则回去父id就会报错。 直接导致了后面的样式失败。 解决办法&#xff1a; 给添加了个默认值0&#xff0c;就可以了&#xff0c;代码如下&#xff1a; var cate_pare…

IDEA的debug方法头坑

一、现象复现 web程序跑起来很卡顿&#xff0c;十几分钟都跑步起来&#xff0c;而且页面刷新十几秒都没有反应。 三月 23, 2019 11:58:22 上午 com.mchange.v2.log.MLog <clinit> 信息: MLog clients using java 1.4 standard logging. 三月 23, 2019 11:58:22 上午 co…

背包例题の01,完全,多重

01背包&#xff1a;TYVJ1096-数字组合 题目链接:http://www.joyoi.cn/problem/tyvj-1096 题目大意 给N个正整数&#xff0c;求能组成M的方法有多少种 解题思路 不是说了吗&#xff0c;01背包呀&#xff01; code #include<cstdio> using namespace std; int n,m,a[10…

ASP.NET Core MVC I\/O编程模型

1.1. I/O编程模型浅析 服务器端编程经常需要构造高性能的IO模型&#xff0c;常见的IO模型有四种&#xff1a; &#xff08;1&#xff09;同步阻塞IO&#xff08;Blocking IO&#xff09;&#xff1a;即传统的IO模型。 &#xff08;2&#xff09;同步非阻塞IO&#xff08;Non…

几天没写代码,就……

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂”前言现在是2022年2月1日21:07:37&#xff0c;今天是农历2022年的第一天&#xff0c;祝大家虎年大吉&#xff0c;新的一年里身体健康&#xff0c;事业有成&#xff01;&#xff01;&#…

深入浅出 Java CMS 学习笔记

转载自 深入浅出 Java CMS 学习笔记 引子 带着问题去学习一个东西&#xff0c;才会有目标感&#xff0c;我先把一直以来自己对CMS的一些疑惑罗列了下&#xff0c;希望这篇学习笔记能解决掉这些疑惑&#xff0c;希望也能对你有所帮助。 1、 CMS出现的初衷、背景和目的&#x…

P1352-没有上司的舞会【树形dp】

正题 评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidP1352 题目大意 一棵树&#xff0c;如果选择了子节点那么就不能选择父节点&#xff0c;如果选择了父节点那么就不能选择子节点。 求选择的点的最大权值和。 解题思路 和最大利润类似。 code #inclu…

vue利用级联选择器实现全国省市区乡村五级菜单联动

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”现在是&#xff1a;2022年2月13日20:09:27今天分享一个五级级联地址的组件的使用吧。前言接到这样的一个需求&#xff1a;需要根据地址查询列表信息&#xff0c;地址可以分别按照省、市…

业务库负载翻了百倍,我做了什么来拯救MySQL架构

转载自 业务库负载翻了百倍&#xff0c;我做了什么来拯救MySQL架构 作者介绍 杨建荣&#xff0c;竞技世界资深DBA&#xff0c;前搜狐畅游数据库专家&#xff0c;Oracle ACE&#xff0c;YEP成员。拥有近十年数据库开发和运维经验&#xff0c;目前专注于开源技术、运维自动化和…

NuGet.org服务管理变更,提升中国用户体验

.NET的软件包管理器NuGet.org是一项面向全球用户搭建的服务&#xff0c;不论用户身在何处&#xff0c;NuGet.org都应该有能力提供高性能的服务。但在实际使用中&#xff0c;我们发现它的表现并不总能如人所愿&#xff0c;特别是在拥有全球第二大.NET开发者社区的中国&#xff0…

vue中父组件怎么调用子组件

前言 前段时间&#xff0c;写了个地址的控件&#xff0c;封装成了一个子组件&#xff0c;在其他页面共用。 原文地址&#xff1a;vue利用级联选择器实现全国省市区乡村五级菜单联动 然后当时出现了个bug&#xff0c;也没有太注意&#xff0c;后来才发现的。就是重置不了地址栏…

POJ3585-Accumulation Degree【树形dp,二次扫描与换根法】

正题 题目链接:http://poj.org/problem?id3585 题目大意 有棵无根树&#xff0c;当你选择一个点为根时&#xff0c;价值就是根节点到所有叶节点的路上的最小权值之和。 解题思路 我们可以先计算一次点1为根时的答案&#xff0c;路上统计答案为didi&#xff0c;然后定义fifi…

ASP.NET Core 运行原理解剖[4]:进入HttpContext的世界

本系列文章从源码分析的角度来探索 ASP.NET Core 的运行原理&#xff0c;分为以下几个章节&#xff1a; ASP.NET Core 运行原理解剖[1]:Hosting ASP.NET Core 运行原理解剖[2]:Hosting补充之配置介绍 ASP.NET Core 运行原理解剖[3]:Middleware-请求管道的构成 IHttpContext…

都忘了自己还有一套房子了。。。

​自20年始来&#xff0c;一直租着我的房子。当时疫情刚刚有所好转&#xff0c;我把房子挂在58上&#xff0c;陆陆续续的有好多人问&#xff0c;不过都没有租&#xff0c;一来离我住的地方有点远&#xff0c;过去一次得个把小时的&#xff0c;人家要看房子不能及时过去。二来问…

JavaFX鼠标拖拽事件

一、节点原拖拽事件 //鼠标拖拽进入node node.setOnMouseDragEntered(event->{//do something });//鼠标拖拽退出node node.setOnMouseDragExited(event->{//do something });//鼠标拖拽经过node&#xff08;入-出&#xff09; node.setOnMouseDragOver(event->{//do…

POJ2228-Naptime【环形结构上的dp】

正题 题目链接:http://poj.org/problem?id2228 题目大意 有一个环&#xff0c;选择一段长度为n进行计算。如果第i个时间点选择不睡觉那么就会增加aiai。你也可以选择睡觉&#xff0c;第一个时间点不算&#xff0c;睡觉时间至少为m。 解题思路 我们可以分为两种情况&#xf…

发现了个神奇的事儿

今天&#xff0c;我发现了个神奇的事儿。当你不想做某件事的时候&#xff0c;你会发现在做这件事之前有好多事需要“紧急”去做&#xff0c;导致最后你“没空”去做这件事&#xff01;举个例子&#xff01;比如我今天晚上不想写代码&#xff0c;于是下班回家一进门&#xff0c;…

JavaFX鼠标点击事件

一、节点原点击事件 //鼠标点击按压 node.setOnMousePressed(event->{//do something });//鼠标点击释放 node.setOnMouseReleased(event->{//do something });//鼠标点击&#xff08;按压-释放&#xff09; node.setOnMouseClicked(event->{//do something }); 二、…