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);
  • 相关阅读:
    Reporting Services无法连接ORACLE,提示:System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本
    ORA-12504:tns:监听程序在 CONNECT_DATA中未获得SERVICE_NAME
    指针
    将gridview 的数据导出EXCEL
    SAP 销售订单中采购标识无法修改
    Spring aop 实例(转)
    JVM — 性能调优
    Linux命令(持续更新)
    J.U.C|一文搞懂AQS(转)
    windows下监控和分析java进程
  • 原文地址:https://www.cnblogs.com/Twittery/p/14343904.html
Copyright © 2011-2022 走看看