JSONObject文本必须以"{"开头

won*_*ong 12 java json

我有这个JSONObject:

{
  "gutter_url" : "",
  "sort_order" : "popularity",
  "result" : [
    {
      "afs" : "Y",
      "release_year" : 1979,
      "album_sort" : "Wall, The"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

并希望将数组放在"结果"的位置,所以我写了这段代码:

JSONObject allCDs = new JSONObject(objectString);
JSONArray CD_List = allCDs.getJSONArray("result");
Run Code Online (Sandbox Code Playgroud)

但后来我得到了这个例外:

Exception in thread "main" org.json.JSONException: A JSONObject text must begin with '{' at character 1
 at org.json.JSONTokener.syntaxError(JSONTokener.java:410)
 at org.json.JSONObject.<init>(JSONObject.java:179)
 at org.json.JSONObject.<init>(JSONObject.java:402)
 at de.htwberlin.gim.Aufgabe8_5.getCoversFor(Aufgabe8_5.java:55)
 at de.htwberlin.gim.Aufgabe8_5.main(Aufgabe8_5.java:77)
Run Code Online (Sandbox Code Playgroud)

Ric*_*iwi 16

您可能将STRING传递给带有前导空格的JSONObject.尝试修剪

JSONObject allCDs = new JSONObject(objectString.replace(/^\s+/,""));
Run Code Online (Sandbox Code Playgroud)

编辑:我认为这是javascript.尝试使用Java代码修剪它

JSONObject allCDs = new JSONObject(objectString.trim());
Run Code Online (Sandbox Code Playgroud)

如果仍然不起作用,则显示字符串中的第一个字符:

System.out.println((int)objectString.trim().charAt(0));
Run Code Online (Sandbox Code Playgroud)

你应该期待123,花括号.实际上,检查整个内容

System.out.println((int)objectString);  // or
System.out.println((int)objectString.trim());
Run Code Online (Sandbox Code Playgroud)

你也可以尝试在字符串之前切割所有内容

JSONObject allCDs = new JSONObject(objectString.substring(objectString.indexOf('{')));
Run Code Online (Sandbox Code Playgroud)


Ode*_*ded 0

此行末尾有两个逗号:

"sort_order" : "popularity",,
Run Code Online (Sandbox Code Playgroud)

它可能应该是一个逗号:

"sort_order" : "popularity",
Run Code Online (Sandbox Code Playgroud)

  • 你是对的,但实际上这个逗号错误只是因为我在 stackoverflow 上缩短了这个问题的 JSONObject。原件完全正确并经过检查。 (3认同)