2017-09-04 6 views
-1

Donc, j'essaie d'utiliser ce fichier json, mais lorsque j'essaye de l'analyser avec JSONobject, il me donne l'erreur. J'ai essayé de trouver des problèmes similaires mais il semblait que ppl n'avait pas la même chose.Problème JSONObject Un texte JSONObject doit commencer par '{' à

Le code génère cette erreur msg

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-file:

{ 
    "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

[Le premier arrêt devrait toujours être la documentation.] (Https://developer.android.com/reference/org/json/JSONObject.html#pubctors) il dit à propos du constructeur 'JSONObject (String)' (Separately: '" subj ects ".trim()'? Huh?) –

+0

Bienvenue dans Stack Overflow. Pour autant que je puisse le voir, JSONObject attend un littéral de chaîne, pas un nom de fichier (donc il ne lira pas le fichier, vous devez le faire séparément) – Mikkel

Répondre

0

Cette ligne

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

est incorrect. Le constructor de JSONObject attend une chaîne JSON réelle, pas le nom d'un fichier.

Lisez d'abord le contenu du fichier, puis transmettez-le au constructeur JSONObject.

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

j'ai vérifié Samebug pour vous de voir si l'un de nos utilisateurs ont eu un problème simular. Ils sont revenus avec les recommandations suivantes.

JSON est invalide ou que vous essayez de la carte à un autre modèle

Remplacer les guillemets simples (') à doubles les ("). Vous devez utiliser des guillemets doubles dans JSON.

J'ai également trouvé un commentaire Github qui peut être utile