Ok, ich weiß, dass viele Fragen wie diese gestellt wurden, aber ich habe eine spezifische Frage, die keiner der anderen hat. Ich möchte wissen, wie ich weiter nach JSON-Datei mit GSON analysieren würde.Erwartete BEGIN_ARRAY aber war BEGIN_OBJECT bei der Verwendung von GSON
{
"BUYER": {
"IGN": "MGlolenstine",
"ProductID": "51"
},
"BUYER": {
"IGN": "MGlolenstine",
"ProductID": "55"
},
"BUYER": {
"IGN": "MGlolenstine",
"ProductID": "0"
},
"BUYER": {
"IGN": "MGlolenstine",
"ProductID": "51"
},
"BUYER": {
"IGN": "MGlolenstine",
"ProductID": "56"
}
}
, denn wenn ich diesen Code verwenden
Scanner scanner = new Scanner(new File(path));
String text = scanner.useDelimiter("\\A").next();
Gson gson = new GsonBuilder().create();
ArrayList<Purchases> p = gson.fromJson(new FileReader(path), Purchases.class);
for(int i = 0; i < p.size(); i++){
arg0.sendMessage(ChatColor.GOLD+"Player: "+p.get(i).BUYER.IGN);
arg0.sendMessage(ChatColor.GOLD+"ProductID: "+String.valueOf(p.get(i).BUYER.ProductID));
}
scanner.close();
Ich erhalte den Fehler
Caused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 2 column 12
Hier nur die Klassen Entsendung ich für den JSON-Code haben
public class Purchases{
PlayerRank BUYER;
}
public class PlayerRank{
String IGN;
int ProductID;
}
Die Problem ist wahrscheinlich, dass ich nicht weiß, wie das JS ON-Arrays und -Objekte sehen so aus. Könnte jemand bitte den Unterschied zwischen JSONArray und JSONObject in meinem JSON-Code erklären?
Vielen Dank im Voraus.
EDIT: Also das ist die feste JSON
{
"buyers" : [
{ "IGN" : "MGlolenstine", "ProductID" : "51" },
{ "IGN" : "MGlolenstine", "ProductID" : "55" },
{ "IGN" : "MGlolenstine", "ProductID" : "0" },
{ "IGN" : "MGlolenstine", "ProductID" : "51" },
{ "IGN" : "MGlolenstine", "ProductID" : "56" }
]
}
Fest Java-Code:
Scanner scanner = new Scanner(new File(path));
String text = scanner.useDelimiter("\\A").next();
Gson gson = new GsonBuilder().create();
Purchases p = gson.fromJson(new FileReader(path), Purchases.class);
for(int i = 0; i < p.buyers.length; i++){
arg0.sendMessage(ChatColor.GOLD+"Player: "+p.buyers[i].IGN);
arg0.sendMessage(ChatColor.GOLD+"ProductID: "+String.valueOf(p.buyers[i].ProductID));
}
Und schließlich die Klassen:
public class Purchases{
PlayerRank buyers[];
}
public class PlayerRank{
String IGN;
int ProductID;
}
Vielen Dank an alle für die Hilfe!
Können Sie die puchases Klasse schreiben. Neben dem, was ich über das JSON-Format geschrieben habe, muss die Klasse, die Sie an gson übergeben, die Datei spiegeln. – Juan
Ich habe den Klassen-Teil in der Frage hinzugefügt. Danke für die Antwort –