2017-12-03 1 views
0

Ich habe Daten im JSON-Format. Zum Beispiel:Problem mit Parse-Daten aus dem JSON-Format

{ 
    "status": "ok", 
    "meta": { 
     "count": 1 
    }, 
    "data": { 
     "531446": { 
      "global_rating": 6595, 
      "statistics": { 
       "random": { 
        "spotted": 14379, 
        "xp": 9087316, 
        "draws": 238, 
        "battles": 15034, 
        "wins": 7614, 
        "avg_damage_assisted_track": 42.94 
       } 
      } 
     } 
    } 
} 

Zum Parsen habe ich den nächsten Code geschrieben. Aber es funktioniert nicht.

JsonReader jsonReader = Json.createReader(new FileInputStream("F:\\Test.json")); 
    JsonObject jsonObject = jsonReader.readObject(); 
    jsonReader.close(); 

    int acc_id = 531446; 

    JsonObject dataJson = jsonObject.getJsonObject("data"); 
    System.out.println("data:" + dataJson); 
    JsonObject accountIdJson = dataJson.getJsonObject(String.valueOf(acc_id)); 

    System.out.println(" accountIdJson:"+accountIdJson); 
    String globalRatingJson = accountIdJson.getString("global_rating"); 

Ich versuche Wert von zu bekommen global_rating und Schlachten, aber dieser Code wirft Ausnahme

Exception in thread "main" java.lang.ClassCastException: 
    org.glassfish.json.JsonNumberImpl$JsonIntNumber cannot be cast to 
    javax.json.JsonString 

auf letzte Zeile, aber ich verstehe nicht, warum. Was habe ich falsch gemacht? Kann mir jemand etwas sagen?

thx.

Antwort

0

global_rating sieht aus wie ein int, nein? Versuchen Sie dies:

int global_rating = accountIdJson.getInt("global_rating"); 
+0

vielen Dank! Ich wusste nicht, dass es harte Checkdatentypen gibt –