2016-04-18 6 views
1

Ich habe momentan eine lokale JSON-Datei in meinem Projekt und möchte sie in ein Array analysieren und dann dieses Array verwenden, um eine anklickbare Liste zu erstellen Elemente, um eine Art Menü zu erstellen. Ein Screenshot eines Beispiels dazu ist unten.Analysieren einer JSON-Datei, die als Menüstruktur in einer Listenansicht in Android verwendet werden soll

http://i.imgur.com/N8G5O9d.png

Ich weiß, wie dies aus einem Array zu erstellen, das Problem, das ich ist das Parsen habe, was ich in ein Array müssen, damit ich diese Liste Ansicht erstellen kann. Hier ist ein Beispiel meines JSON.

{ 
    "Weapons": 
    { 
     "Ranged": 
     [ 
      { 
       "name": "Bow", 
       "desc" : "This is a bow" 
      }, 
      { 
       "name": "Crossbow", 
       "desc" : "This is a crossbow" 
      } 

     ], 
     "Melee": 
     [ 
      { 
       "name" : "Machete", 
       "desc" : "This is a machete" 
      } 
     ] 
    }, 

    "Armor": 
    { 
     "Metal": 
     [ 
      { 
       "name": "Metal Chest Plate", 
       "desc": "This is a metal chest plate" 
      } 
     ] 
    } 
}  

Ich hätte gerne ein Menü mit "Waffen" und "Rüstung". Wenn du dann auf "Waffen" klickst, siehst du ein neues Menü, in dem du entweder "Fernkampf" oder "Nahkampf" wählen kannst. Dann hätten Sie von "Fernkampf" entweder "Bogen" oder "Armbrust". Könnte jemand mir helfen, dies zu einem Array zu analysieren, damit ich das erreichen kann? Ich habe seit einigen Tagen damit zu kämpfen. Vielen Dank!

Antwort

0

Sie können "JSON Simple" -Bibliothek für Ihre Aufgabe verwenden. Einige Informationen über JSON Simple hier

public static final String LOT_JSON_CAR = "car"; 
    public static final String LOT_JSON_PRICE = "price"; 
    public static final String LOT_JSON_LOTS = "lots"; 

    JSONParser parser = new JSONParser(); 
    JSONObject jsonObject; 
    try { 
     jsonObject = (JSONObject) parser.parse(/* your json here */); 
     JSONArray jsonLotsArray = (JSONArray) jsonObject.get(LOT_JSON_LOTS); 
     Iterator<JSONObject> iterator = jsonLotsArray.iterator(); 

     while (iterator.hasNext()) { 
      JSONObject jsonLot = iterator.next(); 
      JSONObject jsonCar = (JSONObject) jsonLot.get(LOT_JSON_CAR); 
      JSONObject jsonUser = (JSONObject) jsonCar.get(CAR_JSON_USER); 
     } 
    } catch (ParseException e) { 
     // some code here 
    } 
0

könnten Sie GSON verwenden, um die json Text in Ihre Java-Klasse deserialisieren. Von dort können Sie die Klasse mit Ihrem bevorzugten Adapter verwenden, um das Menü zu erstellen (oder iterieren, wenn Sie ein benutzerdefiniertes Menü erstellen, nehme ich an).

0

Sie können dieses Problem lösen, wie folgt:

eine POJO von Ihrer json Struktur erstellen. Es kann sehr einfach von here

Set Source-Typ zu JSON, Annotation Style zu keiner. Dieses Tool hilft Ihnen beim Erstellen der Modellklasse mit vollständiger Hierarchie.

Danach können Sie mit GSON Ihre JSON in Java-Objekte deserialisieren. Gson tut diesen Schritt wie folgt:

Gson menu= new Gson(); 
menu.fromJson(receivedJsonFromBackend, YOURMODELCLASS.class) 

Danach können Sie mit dem Menü-Objekt wie menu.getName, nur spielen können menu.getDesc usw.

Verwandte Themen