0
String jsonStr = "{\"reg\":\"(\\.|\\?){3,}\"}";
JSON.parseObject(jsonStr);
对以上这种JSON数据进行反序列化时会报错:
com.alibaba.fastjson.JSONException: unclosed string : .
at com.alibaba.fastjson.parser.JSONLexerBase.scanString(JSONLexerBase.java:989)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:469)
at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1367)
at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1333)
at com.alibaba.fastjson.JSON.parse(JSON.java:152)
at com.alibaba.fastjson.JSON.parse(JSON.java:162)
at com.alibaba.fastjson.JSON.parse(JSON.java:131)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:223)
jsonStr这个字符串的System.out.println()结果是:{"reg":"(\.|\?){3,}"}
怎么处理呢?使用的版本是1.2.56
我尝试了以下这个json库在反序列化时没有问题
net.sf.json.JSONSerializer.toJSON(jsonStr)
不过它的做法是删除其中的“\”符号,反序列化后的JSON再序列化后,字符串会变为:
{"reg":"(.|?){3,}"}