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