JSONObject文本必须以“{”开头

我有这个JSONObject:

{ "gutter_url" : "", "sort_order" : "popularity", "result" : [ { "afs" : "Y", "release_year" : 1979, "album_sort" : "Wall, The" } ] } 

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

 JSONObject allCDs = new JSONObject(objectString); JSONArray CD_List = allCDs.getJSONArray("result"); 

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

 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.(JSONObject.java:179) at org.json.JSONObject.(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) 

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

 JSONObject allCDs = new JSONObject(objectString.replace(/^\s+/,"")); 

编辑:我以为这是javascript。 尝试使用Java代码修改它

 JSONObject allCDs = new JSONObject(objectString.trim()); 

如果仍然无效,则显示字符串中的第一个字符:

 System.out.println((int)objectString.trim().charAt(0)); 

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

 System.out.println((int)objectString); // or System.out.println((int)objectString.trim()); 

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

 JSONObject allCDs = new JSONObject(objectString.substring(objectString.indexOf('{'))); 

这行末尾有两个逗号:

 "sort_order" : "popularity",, 

它应该是一个逗号:

 "sort_order" : "popularity", 

示例1:从文件中读取Json文本。

 package com.json.example; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.apache.commons.io.IOUtils; import org.json.JSONObject; public class GetArrayObjectFromJsonText { public static void main(String[] args) { String jsonText; try { jsonText = IOUtils.toString(new FileInputStream(new File("C:\\Users\\udaykiranp\\Downloads\\Json.txt"))); int i = jsonText.indexOf("{"); jsonText = jsonText.substring(i); JSONObject jsonFile = new JSONObject(jsonText); System.out.println("Input JSON data: "+ jsonFile.toString()); Object result = jsonFile.get("result"); System.out.println("Result array Data: "+ result); } catch (IOException e) { e.printStackTrace(); } } } 

例2:

 String jsonText = "\"{\"gutter_url\":\"\", \"result\":[{\"album_sort\":\"Wall, The\",\"release_year\":1979,\"afs\":\"Y\"}],\"sort_order\":\"popularity\"}\""; int i = jsonText.indexOf("{"); jsonText = jsonText.substring(i); JSONObject jsonFile = new JSONObject(jsonText); System.out.println("Input JSON data: "+ jsonFile.toString()); Object result = jsonFile.get("result"); System.out.println("Result array Data: "+ result); 

首先获取{的位置,然后读取json文本数据。

输出:

 Input JSON data: {"gutter_url":"","result":[{"album_sort":"Wall, The","release_year":1979,"afs":"Y"}],"sort_order":"popularity"} Result array Data: [{"album_sort":"Wall, The","release_year":1979,"afs":"Y"}]