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

问题的场景

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

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

原因

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

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

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

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

解决方法:

(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}}

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

你可能感兴趣的:(java,android)