JSONObject的问题一个JSONObject文本必须以'{'开头
问题描述:
所以我试图使用这个json文件,但是当我尝试用JSONobject解析它时,它给了我错误。我试图找到类似的问题,但它似乎并没有同样的事情。JSONObject的问题一个JSONObject文本必须以'{'开头
的代码产生此错误味精
Exception in thread "main" org.json.JSONException:
A JSONObject text must begin with '{' at 1 [character 2 line 1]
的Java:
public void readSubjects(String filename){
obj =new JSONObject(filename.trim());
objArr=obj.getJSONArray("subjects".trim());
String tmpName;
String tmpRealName;
for(int i=0;i<objArr.length();i++){
tmpName=objArr.getJSONObject(i).getString("subject_code");
tmpRealName=objArr.getJSONObject(i).getString("name");
System.out.println(tmpName + " " + tmpRealName);
}
}
JSON文件:
{
"teachers": [
{
"name": [
"Peremann"
],
"age": 22,
"subject": [
"pgr200"
],
"availability": true,
"contact_info": ""
},
{
"name": "Jarand",
"age": 23,
"subject": "root"
}
],
"subjects": [
{
"subject_code": "pgr200",
"name": "Avansert Javaprogrammering",
"campus_priority": "Fjerdingen",
"educationForm": "",
"subjectProgram": "",
"duration": "X",
"amountOfHours": "",
"amountOfStudents": 12
}
],
"studentGroups": [
{
"students": []
}
],
"rooms": [
{
"room_code": "F11",
"fasilitetsstoette": "test",
"max-capasity": 50,
"room-size": "X"
}
]}
答
此行
obj =new JSONObject(filename.trim());
不正确。 constructor的JSONObject
需要实际的JSON字符串,而不是文件的名称。
首先读取文件的内容,然后将它传递给JSONObject
的构造函数。
String content = new String(Files.readAllBytes(Paths.get("example.json")));
obj = new JSONObject(content);
[第一站应始终是文档。](https://developer.android.com/reference/org/json/JSONObject.html#pubctors)什么是它说'JSONObject(String)'的构造函数?(另:“subj ECTS” .trim()'?嗯?) –
欢迎来到堆栈溢出。据我所知,JSONObject需要一个字符串文字,而不是一个文件名(所以它不会读取文件,你必须单独做) – Mikkel