Json 字符串中带有冒号(:),导致Gson解析失败,该如何处理?

Json 字符串中带有冒号(:),导致Gson解析失败,该如何处理?

问题描述:

我从服务端获取到 Json 字符串,在使用 Gson 转化为对象时出错,提示:

com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated object...

经过查找,发现是 Json 字符串中有一个 value 中含有冒号(:)

Json 如下(因为太长了,所以前后部分省略了):

省略。。。
            {    
                "objectId": "bf3d3b24e95447d6866c342a39361588", 
                "imageId": "96bdfa7aaddd4b40848ddcf02266308c", 
                "sha1": "25031f31f939fe79bf60eddbf0cd37e41929501f", 
                "fileCategory": "e55ec864ba2344cea3dcafc2781e3fe5", 
                "originalFileName": "9c77a79c4ef643f3ab386cfee59f64c6_https:www.lgstatic.comiimageM008FDCCgqCHmAJKSSAezOCAAQlPl9R-Rw735.JPG", 
                "sourceFileName": "895e48fa61b24573b8cb2f177d52570a_1611496313610.JPG", 
                "coverFileName": "d35d3357e17e46a4a205cc930fbdc693_1611496313611.JPG", 
                "thumbnailFileName": "c8b80504c5ab4e84a8e3b73e1982dcae_1611496313611.JPG", 
                "createTime": 1611412660000, 
                "imageUser": "84f6e0d8d94348ccab981e364661a419", 
                "imageStatus": 1
            }
省略。。。

就是 key 是 originalFileName 的 value 导致的出错(...https:...),将冒号去掉就可以正常解析了,但又不能随便修改原始数据,请问这种情况该怎么办啊?

1、替换成中文符号再进行解析,解析后取值替换回来,这会有点麻烦。

2、换一个json包,jackson、fastjson这些来处理试试

1.添加 GsonFormat 插件

2.创建Bean.class

3.Alt + s