gson解析无固定模板的json串时value值出现两个双引号的解决方法

问题的场景

从json文件中读取数据然后进行增加字段并且排序后,重新写入json文件,发现原本的数据中出现“\"”。

{"domain":{"mty":"\"hhy\"","mt":"hh"},"weight":{"mty":70,"mt":30}}

原因

在解析含有字符串的数据时候通过

JsonObject jsonObject1 = (JsonObject) new JsonParser().parse(json);的方式去解析的时候所有的带有字符串的value值都会自动再加上一层双引号。


所以再次写入的时候才会出现转义过的双引号

解决方法:

(1)如果没有解析出来的数据是按照原本固定的顺序排列的要求的话可以选择fastjson进行解析,不会带上双引号,亲测可行。

(2)如果必须固定位置的使用LinkedHashMap进行存取,使用gson解析出来的数据就是原来的顺序,然后针对双引号的问题,我是在最终把数据转载到LinkedHashMap的时候使用replace

domainMap.put(map.getKey(), map.getValue().toString().replace("\"",""));去掉了其中的一个双引号。
运行之后的结果如下:

{"domain":{"mt":"hh","mty":"hhy"},"weight":{"mt":70,"mty":30}}

这个问题我也不太好描述,如果有遇到同样问题的朋友们希望能帮助到你。语言组织不太好

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值