解析JSON字符串的时候报错

threw exception [Request processing failed; nested exception is com.alibaba.fastjson.JSONException: syntax error, position at 2036711, name home_addrr] with root cause

  1. 首先怀疑是json文件里面有转义字符或者有单引号之类的错误, 通过格式化工具处理后并没有问题.

  2. 怀疑是fastjson的问题 . 又引了gson . sfjson也都不能成功解析

  3. 怀疑是编码问题 , 因为这个问题是在开发工具运行能正常解析 , 打包运行以后就解析不成功.

  在解析之前调用witerCode方法打印编码

    private static void witerCode() {
        System.out.println("Default Charset=" + Charset.defaultCharset());
        System.out.println("file.encoding=" + System.getProperty("file.encoding"));
        System.out.println("Default Charset=" + Charset.defaultCharset());
        System.out.println("Default Charset in Use=" + getDefaultCharSet());
    }

    private static String getDefaultCharSet() {
        OutputStreamWriter writer = new OutputStreamWriter(new ByteArrayOutputStream());
        String enc = writer.getEncoding();
        return enc;
    }

然后我的开发工具打印出来的是

 打包jar运行打印出来的是

 修改了编码以后 , 终于可以成功解析了

修改前
@echo off
title GetCriminal:8099
java -jar -Dspring.profiles.active= .\service-demo-1.0.0-SNAPSHOT.jar
pause

修改后
@echo off
title GetCriminal:8099
java -Dfile.encoding=utf-8 -jar -Dspring.profiles.active= .\service-demo-1.0.0-SNAPSHOT.jar
pause

GitHub 加速计划 / js / json
18
5
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:3 个月前 )
2d42229f * Support BSON uint64 de/serialization Signed-off-by: Michael Valladolid <mikevalladolid@gmail.com> * Treat 0x11 as uint64 and not timestamp specific Signed-off-by: Michael Valladolid <mikevalladolid@gmail.com> --------- Signed-off-by: Michael Valladolid <mikevalladolid@gmail.com> 5 天前
1809b3d8 Signed-off-by: Niels Lohmann <mail@nlohmann.me> 5 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐