2017-05-14 2 views
-2

Ich habe folgenden JSONJava JSON Creation

{ 
     "display": { 
      "icon": { 
       "item": "minecraft:elytra" 
      }, 
      "title": "Learn to Fly" 
     }, 
     "parent": "minecraft:story/enter_end_gateway", 
     "criteria": { 
      "elytra": { 
       "trigger": "minecraft:inventory_changed", 
       "conditions": { 
        "items": [ 
         { 
          "item": "minecraft:elytra", 
          "data": 1 
         } 
        ] 
       } 
      } 
     } 
    } 

Wie würde ich in der Lage sein, dies in Java zu erstellen?

Zusammen mit in der Lage sein, jedes Element, z. B. den Titel zu bekommen.

Danke!

+0

Versuchen Sie, diese JSON zu analysieren? –

+0

Nein, ich möchte das natürlich mit anderen Werten erstellen (für Minecraft .JSON Achievements). Ich würde gerne wissen, wie ich gehen und jedes Element erstellen könnte (auch wenn Sie Ihr eigenes Beispiel verwendet haben) – Chazmondo

+0

Verwenden Sie dies, wenn Sie ein Java POJO erstellen möchten http://pojo.sodhanalibrary.com/ – dosdebug

Antwort

0

Hier ist der Code ist Ihre Json mit org.json Bibliothek in Java zu bauen:

import org.json.JSONArray; 
import org.json.JSONObject; 

public class JSONBuilderMinecraft { 

    public static void main(String args[]) throws Exception{ 

     JSONObject mainJson = new JSONObject(); 



     //inner most json array 
     JSONArray itemarray=new JSONArray(); 

     //inner most json 
     JSONObject itemsJson= new JSONObject(); 
     itemsJson.put("item", "minecraft:elytra"); 
     itemsJson.put("data", 1); 
     itemarray.put(itemsJson); 

     JSONObject conditions = new JSONObject(); 
     conditions.put("items", itemarray); 


     JSONObject elytra = new JSONObject(); 
     elytra.put("trigger", "minecraft:inventory_changed"); 
     elytra.put("conditions", conditions); 


     mainJson.put("criteria", elytra); 
     mainJson.put("parent", "minecraft:story/enter_end_gateway"); 

     JSONObject icon = new JSONObject(); 
     icon.put("item", "minecraft:elytra"); 

     JSONObject display = new JSONObject(); 
     display.put("title", "Learn to Fly"); 
     display.put("icon", icon); 

     mainJson.put("display", display); 

     System.out.println(mainJson.toString()); 

    } 


} 
+0

Vielen Dank! Akzeptiert diese Antwort! – Chazmondo

+0

Sie sind willkommen! –

+0

das ist eine hart codierte Lösung, die schwer zu warten und zu lesen ist, oder? – Andrew

2

Scheck diese Bibliothek gson von Google ist es einfach eine Menge von APIs zu verwenden und haben mit JSON zu arbeiten

+0

Danke! Wie oben erwähnt – Chazmondo

+0

@Chazmondo, gehen Sie zur Dokumentation auf github: https://github.com/google/gson/blob/master/UserGuide.md#TOC-Primitives-Examples –

0

stattdessen den Code zu schaffen wie diese dumme Idee

JSONObject jsonObject=new JSONObject(); 
JSONObject jsonObject2=new JSONObject(); 
JSONObject jsonObject3=new JSONObject(); 

jsonObject.put("display",jsonObject3); 

Sie Gson verwenden können, so Einfach erstellt es Json-Objekt ohne verschwenden Sie Ihre Zeit auf Code machen Sie eine Klasse für jedes neue Json-Objekt und machen Sie eine Beziehung zwischen ihnen.

+0

Vielen Dank! GSON befindet sich im Spigot-Gefäß (von Minecraft). – Chazmondo

+0

Können Sie mir ein paar Beispiele mit Gson geben? – Chazmondo

1

Der Prozess Sie fragen wird unmarshalling genannt (ein serialisierte Objekt in JSON/XML/andere Formate in ein Objekt Parsen mit innerhalb des objektorientierten Kontext zu arbeiten).

Ich würde empfehlen, einen Blick auf Jackson haben. Es ist eine beliebte Bibliothek, die in den bekannten Frameworks wie Spring (dem MVC-Modul) verwendet wird. ein Domain-Objekt erstellt haben, können Sie eine jsonData in eine instance der DomainClass Klasse wie

DomainClass instance = new ObjectMapper().readValue(jsonData, DomainClass.class); 

Die jsonData Quelle File s, InputStream s, byte Arrays, String s und so on kann verwandeln. Es liegt an Ihnen, den bequemsten Weg zu finden, um diese Daten zu erhalten.

Zusammen mit in der Lage, jedes Element, z. B. den Titel zu bekommen.

Wenn die Instanz fertig ist, können Sie Elemente bekommen (jetzt Felder) durch die Accessoren (die get Methoden).

0

Versuchen Sie dieses, es funktioniert gut:

public static void main(String[] args) throws JSONException { 
     String jsonString = "{\n" 
       + "  \"display\": {\n" 
       + "   \"icon\": {\n" 
       + "    \"item\": \"minecraft:elytra\"\n" 
       + "   },\n" 
       + "   \"title\": \"Learn to Fly\"\n" 
       + "  },\n" 
       + "  \"parent\": \"minecraft:story/enter_end_gateway\",\n" 
       + "  \"criteria\": {\n" 
       + "   \"elytra\": {\n" 
       + "    \"trigger\": \"minecraft:inventory_changed\",\n" 
       + "    \"conditions\": {\n" 
       + "     \"items\": [\n" 
       + "      {\n" 
       + "       \"item\": \"minecraft:elytra\",\n" 
       + "       \"data\": 1\n" 
       + "      }\n" 
       + "     ]\n" 
       + "    }\n" 
       + "   }\n" 
       + "  }\n" 
       + " }"; 

     JSONObject object = new JSONObject(jsonString); 
     JSONObject disp = object.getJSONObject("display"); 
     String title = disp.getString("title"); 

     System.out.println("title is " + title); 
    } 
+0

Die Frage war, den JSON zu erstellen, Daten nicht abrufen nachdem ich es wie Ihren obigen Code gebaut habe .. –

+0

Ja genau, ich denke, er kann JSON im String-Format wie in meinem Code verwenden –