JSON转换集合,报错exepct '[', but {, pos 1, json或者syntax error, expect {, actual [, pos 0


第一个错误


  1. 调用JSON.parseArray(json, xxx.class);出错exepct '[', but {, pos 1, json!此方法要求传入一个json数组!
    • 这个错误是因为你的json不是数组,解析的时候没有[]括号,比如

    {"name":"张三","age":"12"}

    • 才报这个错误。(此方法是解析数组的你非要传个object,肯定报错啊)
{
    "timestamp": "2021-01-29T03:09:36.966+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "exepct '[', but string, pos 207, json : \"[\\r\\n    {\\r\\n        \\\"id\\\": \\\"PT_0107130809062620001\\\",\\r\\n        \\\"time\\\": \\\"20210129092600\\\",\\r\\n        \\\"data\\\": {\\r\\n            \\\"P\\\": 0.0,\\r\\n            \\\"SOC\\\": \\\"0\\\"\\r\\n        }\\r\\n    }\\r\\n]\"",
    "path": "/staff"
}
  1. 案例
    // 模拟自定义的请求接口
    @RequestMapping(method = RequestMethod.POST)
    @ResponseBody
    public Object CarController(@RequestBody String json) {
        Object toJSON = JSON.toJSON(json);
        List<Parameter> list = JSONArray.parseArray(String.valueOf(toJSON), Parameter.class);
        System.out.println(JSON.toJSON(list)); //输出:[{"data":{"P":0.0,"SOC":"0"},"id":"PT_0107130809062620001","time":"20210129092600"}]
        return new Return();
    }
  1. 解决方法
    • 在json参数加上[]就好了,这样是没问题的

    [{"name":"张三","age":"12"}]

第二个错误


  1. 调用JSON.parseObject(json, xxx.class);出错syntax error, expect {, actual [, pos 0!语法错误,期望{,实际的[,pos 0!
    • 这个错误是因为你的json是数组,解析的时候有[]括号,比如

    [{"name":"fs","age":"12"}]

    • 才报这个错误。(此方法是解析object的你非要传个数组,肯定报错啊)
  2. 解决方法
    • 调用JSON.parseArray(json, xxx.class)即可;
    • 或者说你用循环
for(int i =0;i<jsonArray.size();i++){
	JSON.parseObject(json[i], xxx.class);
}

总结


  1. 解析Object,也就是一个JSON串。
    • JSON.parseObject(json, xxx.class);
  2. 解析一组【数组】Object,也就是一个数组中包含N个字符串。
    • JSON.parseArray(json, xxx.class);


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM