字符串到JSONArray由于字符串中的斜杠而导致异常

时间:2019-01-30 08:41:14

标签: java json spring spring-boot org.json

我正在尝试将json字符串转换为的JSONArray org.json.JSONArray类,该字符串包含带有正向slah的dateformat,但是由于字符串中包含斜杠,所以出现了以下异常。

public static void main(String args[]) throws JSONException{

        String jsonString = "[{ID:1, Name:Ann, DOB:14/08/1991}, {ID:2, Name:Vann, DOB:14/08/1992}]";
        JSONArray jsonArray = new JSONArray(jsonString);
        System.out.println(jsonArray.toString());
    }

Exception in thread "main" org.json.JSONException: Expected a ',' or '}' at 25 [character 26 line 1]
    at org.json.JSONTokener.syntaxError(JSONTokener.java:451)
    at org.json.JSONObject.<init>(JSONObject.java:230)
    at org.json.JSONTokener.nextValue(JSONTokener.java:380)
    at org.json.JSONArray.<init>(JSONArray.java:118)
    at org.json.JSONArray.<init>(JSONArray.java:147)
    at com.s4m.sftp.service.impl.SFTPServiceImpl.main(SFTPServiceImpl.java:1150)

2 个答案:

答案 0 :(得分:2)

JSON中的字符串值

字符串应加引号...包括属性名称。参见the JSON specification

  

对象结构表示为一对大括号,包围着零个或多个名称/值对(或成员)。名称是字符串。

     

字符串的表示类似于C系列编程语言中使用的约定。字符串以引号开头和结尾。

JSON中的日期值

JSON不代表date类型。它必须表示为字符串。有关更多信息,请参见this answer

在线JSON验证器

您可以使用online JSON validators来检查有效性。

有效JSON

[
   {
      "ID":1,
      "Name":"Ann",
      "DOB":"14/08/1991"
   },
   {
      "ID":2,
      "Name":"Vann",
      "DOB":"14/08/1992"
   }
]

但是,我将格式yyyy-mm-dd用于日期值,而不是dd/mm/yyyy

作为Java字符串的有效JSON

String jsonString =
"[{\"ID\":1,\"Name\":\"Ann\",\"DOB\":\"14/08/1991\"},{\"ID\":2,\"Name\":\"Vann\",\"DOB\":\"14/08/1992\"}]";

答案 1 :(得分:1)

字符串应用双引号引起来。

尝试使用下面的JSON字符串

[{“ ID”:1,“ Name”:“ Ann”,“ DOB”:“ 14/08/1991”},{“ ID”:2,“ Name”:“ Vann”,“ DOB” :“ 14/08/1992”}]

将所有字段的类型保留为字符串。使用toString转换或仅发送RFC 1123日期字符串ToString(“ r”)进行解析