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"}]