欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

fastjson com.alibaba.fastjson.JSONException: unclosed string : 十

程序员文章站 2022-07-14 22:49:49
...

使用fastjson在转换的时候,

com.alibaba.fastjson.JSONException: unclosed string : 十
    at com.alibaba.fastjson.parser.JSONLexerBase.scanString(JSONLexerBase.java:1001)
    at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:485)
    at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1407)
    at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1373)
    at com.alibaba.fastjson.JSON.parse(JSON.java:182)
    at com.alibaba.fastjson.JSON.parse(JSON.java:192)
    at com.alibaba.fastjson.JSON.parse(JSON.java:148)

    /**
     * 因为key之前多了个 \ 导致解码失败了。
     * 不管多少个反斜杠,简单粗暴的给他全替换了得了
     * StringEscapeUtils.unescapeJavaScript(json);
     * 这个不太好使。
     */
    @Test
    public void unclosedString2() {
        String json = "{\"s.os\":\"李\\\\\\\\\\\\学\\十大aaa@qq.com#$%^&*()))_+{}:?><{}][|||||{{{}}}}[][][][[[]]]:::;;;''''''\\~`表代表///23456...#\",\"ssass\":\"\",\"lxk\":123467987654345}";
        System.out.println(json);
        //Map 类可以, hash map 不 OK。
        Map map = JsonUtils.parseJsonToObj(json, Map.class);
        System.out.println(map);
    }

    public static <T> T parseJsonToObj(String json, Class<T> c) {
        try {
            JSONObject jsonObject = JSON.parseObject(json);
            return JSON.toJavaObject(jsonObject, c);
        } catch (Exception e) {
            try {
                //String s = StringEscapeUtils.unescapeJavaScript(json);
                String s = json.replace("\\", "");
                JSONObject jsonObject = JSON.parseObject(s);
                return JSON.toJavaObject(jsonObject, c);
            } catch (Exception ee) {
                System.out.println(ee.getMessage());
            }
        }
        return null;
    }

fastjson com.alibaba.fastjson.JSONException: unclosed string : 十

说是升级jar包版本能解决,但是好像不行,我试过  '1.2.73'这个了还是不行,最后还又说使用 StringEscapeUtils.unescapeJavaScript(json) 这个来,其实就是把反斜杠给替换掉了,这个apach的common lang包里面的,要是有这个依赖的话,直接可以使用,要没的话,就简单的字符串替换解决吧,最好是能吧json中的反斜杠给干掉。

相关标签: java