zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    ORACLE 11.2.0.4 OCR VOTING DISK 模拟恢复场景
    Oracle Enterprise Linux 6.4 下配置vncserver
    Oracle Enterprise Linux 6.4 下挂载ISCSI 设备
    关于Solaris 的磁盘的分区
    【Google Earth】pro之视频录制
    【爱江山越野跑】ITRA积分认证流程
    android发送邮件
    android手机有多个摄像头,打开其中一个
    Android截图
    Android中的ACCESS_MOCK_LOCATION权限使用Demo
  • 原文地址:https://www.cnblogs.com/Twittery/p/14343904.html
Copyright © 2011-2022 走看看