2017-09-04 241 views
-1

所以我试图使用这个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" 
     } 
    ]} 
+1

[第一站应始终是文档。](https://developer.android.com/reference/org/json/JSONObject.html#pubctors)什么是它说'JSONObject(String)'的构造函数?(另:“subj ECTS” .trim()'?嗯?) –

+0

欢迎来到堆栈溢出。据我所知,JSONObject需要一个字符串文字,而不是一个文件名(所以它不会读取文件,你必须单独做) – Mikkel

回答

0

此行

obj =new JSONObject(filename.trim()); 

不正确。 constructorJSONObject需要实际的JSON字符串,而不是文件的名称。

首先读取文件的内容,然后将它传递给JSONObject的构造函数。

String content = new String(Files.readAllBytes(Paths.get("example.json"))); 
obj = new JSONObject(content); 
0

我检查Samebug给你看,如果我们的任何用户都产生了simular问题。他们回来了以下建议。

的JSON是无效的,或者您尝试映射到不同的模型

替换单引号('),双一(“)。你应该在JSON使用双引号。

我还发现一个可能有用的Github评论。

相关问题