【MapSheep】
[好记性不如烂笔头]

第一个错误


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

    • 才报这个错误。(此方法是解析数组的你非要传个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);
posted on 2021-01-29 11:15  (Play)  阅读(3182)  评论(0编辑  收藏  举报