Lesen JSON aus einer text-Datei
Ich kenne einige JSON-libs herum und ich bin derzeit auf der Suche in Google-JSON-aber alle, die ich erreichen möchte, ist etwas zu einfach und ich will wissen, was Sie vorschlagen würde.
Ich möchte eine JSON-Bibliothek, die ich lese eine Textdatei, die in JSON und lassen Sie mich es zu konvertieren in strings, int, boolean, etc.
-- Jetzt mit Json.org/java
Kann es LESEN! ABER!!
import org.json.*;
public class readJ {
public static String MapTitle;
public static int[][] tiles;
public static void main(String[] args) {
String json =
"{"
+"'name': 'map_one.txt',"
+"'title': 'Map One',"
+"'currentMap': 4,"
+"'items': ["
+"{ name: 'Pickaxe', x: 5, y: 1 },"
+"{ name: 'Battleaxe', x: 2, y: 3 }"
+"],"
+"map': [ [ 1,3,1,1,1,24,1,1,1,1,1,1,1 ],"
+"[ 1,3,1,1,1,24,1,1,1,1,1,1,1 ],"
+"[ 1,7,1,1,1,24,1,1,24,1,1,1,1 ],"
+"[ 1,7,1,1,7,1,1,1,24,1,1,1,1 ],"
+"[ 1,7,7,7,1,24,24,24,24,1,1,1,1 ],"
+"[ 1,1,7,1,1,24,1,24,1,1,1,1,1 ],"
+"[ 1,1,1,1,1,24,1,1,1,1,1,1,1 ],"
+"[ 1,1,3,1,1,24,1,1,1,1,1,1,1 ],"
+"[ 1,3,3,1,1,24,1,1,1,1,1,1,1 ]]"
+"}";
try {
JSONObject JsonObj = new JSONObject(json);
MapTitle = JsonObj.getString("title");
tiles = JsonObj.getJSONArray("map");
}catch (JSONException er) {
er.printStackTrace();
}
System.out.println(MapTitle);
System.out.println(tiles[0][1]);
}
}
Beim kompilieren bekomme ich diesen Fehler:
C:\Users\Dan\Documents\readJSON\readJ.java:32: incompatible types
found : org.json.JSONArray
required: int[][]
tiles = JsonObj.getJSONArray("map");
^
1 error
Tool completed with exit code 1
- Wahrscheinlich öffnen Sie eine neue Frage für jedes problem, das Sie hatten, war in Ordnung. Sie begannen zu Fragen, eine Sache, und am Ende fragt eine andere.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Installieren Google Gson und erstellen Sie diese zwei Modell-Klassen
und
Und konvertieren von JSON wie folgt:
Den Titel erhalten nur:
Wird und sich der map-Element bei x=3 und y=3:
Wird und sich der name des ersten
Item
:Einfach! Die Umwandlung in die andere Richtung auf ist auch einfach mit
Gson#toJson()
.Siehe auch diese Antwort weiteren Komplex Gson Beispiel.
map
ist nicht richtig zitiert. Haben Sie vergessen, ein singlequote vormap
.static
oder Sie ohnepublic
Modifizierer unten unterhalb der aktuellen Klasse (D. H. nicht verschachtelt werden Sie!), oder einfach nur legte Sie standalone in einem und demselben Paket.println()
in der Tat gibt nichts zurück (void
) Las die Zeile noch einmal, Sie ungeduldiger! 😉getItems()
und es gibt eineList<Item>
.System.out.println(data.getItems().get(0).getName()); // Pickaxe
null zurück o_Omap
fest). Dein problem liegt woanders.Empfehle ich diese Bibliothek:
http://www.json.org/java/
Müssen Sie einfach erstellen Sie ein JSONObject von string, und erhalten den Namen proprety.
Laden Sie die Quelle, und importieren Sie es in Ihr Projekt: http://www.json.org/java/json.zip
Dem Spring-Framework verwendet Jackson, also das ist eine ziemlich gute Bestätigung für Jackson.
JacksonInFiveMinutes
Finden Sie unter "Einfache Datenbindung Beispiel" überschrift, wenn Sie nur wollen, verwenden Sie die generische Karten.
Als für die Fehlermeldungen.
Sie nicht in der Regel den Namen Ihres Pakets die gleiche Weise, wie das Paket, das Sie importieren möchten, obwohl Sie können.
Müssen Sie entweder: 1 nennen Sie es anders, 2.- don ' T setzen Sie den import
Ihnen fehlt ein "neuer" es... es sollte
new JSONObject(...
Hier dein json string ist ungültig:
Erstellt und das array mit Objekten in das erste Objekt hat die Attribute
1,3,1
etc ohne Wert.Werden sollte:
Für die, die ein array mit arrays drin.
Oder
So können Sie Attribute 1,3,1 etc mit Wert 0, aber... das macht keinen Sinn
json-lib kommt mit einem Beispiel der Konvertierung eines String in ein JSON-Objekt:
http://json-lib.sourceforge.net/snippets.html#Creating_a_JSONObject_from_a_JSON_formatted_string
Können Sie dies gut mit google-gson. Ich denke, es würde in etwa so Aussehen: