当前位置: 首页 > 知识库问答 >
问题:

json.jsonException:JSONArray文本必须在1[character 2 line1]处以“[”开头--如何解决?

唐经国
2023-03-14

JsonArray是:

{
  "list": [
    {
      "name": abc,
      "start_date": "2017-5-18 0:30:00",
      "end_date": "2017-6-1 0:30:00",
      "start_address": "Gujarat 380060, India",
      "end_address": "Ognaj, Ahmedabad, Gujarat, India"
    },
    {
      "name": pqr,
      "start_date": "2017-5-18 0:30:00",
      "end_date": "2017-6-1 0:30:00",
      "start_address": "Gujarat 380060, India",
      "end_address": "Ognaj, Ahmedabad, Gujarat, India"
    }
  ]
}

使用springBoot的java代码是bellow

@RequestMapping(值=“/addabc”,方法=RequestMethod.Post)

@crossorigin
公共映射addabc(@requestbody字符串数据,HttpServletRequest请求){

JSONArray JSONArray=new JSONArray(数据);

尝试{

for(int i=0; i < jsonArray.length(); i++) {
  JSONObject jsonobject = jsonArray.getJSONObject(i); 
   ......
   ......

}   

获取异常为:-

org.json.JSONException: A JSONArray text must start with '[' at 1 [character 2 line 1]
    at org.json.JSONTokener.syntaxError(JSONTokener.java:433) ~[json-20140107.jar:na]
    at org.json.JSONArray.<init>(JSONArray.java:105) ~[json-20140107.jar:na]
    at org.json.JSONArray.<init>(JSONArray.java:144) ~[json-20140107.jar:na]
    at com.abc.io.controller.abcController.addabc(abcController.java:214) ~[classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_111]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_111]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_111]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_111]
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) ~[spring-web-4.2.6.RELEASE.jar:4.2.6.RELEASE]
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) ~[spring-web-4.2.6.RELEASE.jar:4.2.6.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE]
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(Abstract.......

当我将json数组转换为JSONArray类时,得到异常。如何处理json数组到JSONArray。

共有1个答案

云何平
2023-03-14

首先,您给出的JSON不是一个数组。只有“list”对象是数组。

其次,“name”的值应该在“list”中的两个对象中的“”(类似于“name”:“pqr”,)。因此提供的json无效。

对于有效的json,下面的代码给出了JSONArray中的JSONObject

        JSONParser parser = new JSONParser();
        JSONObject json = (JSONObject) parser.parse(data);

        JSONArray jsonArray = (JSONArray) json.get("list");
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonobject = (JSONObject) jsonArray.get(i);
            .....
            .....
        }
 类似资料: