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

使用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\":\"李\\\\\\\\\\\\学\\十大!@#$%^&*()))_+{}:?><{}][|||||{{{}}}}[][][][[[]]]:::;;;''''''\\~`表代表///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 parseJsonToObj(String json, Class 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 : 十_第1张图片

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

你可能感兴趣的:(java)