2016-04-18 7 views
1

私のプロジェクトには現在ローカルのJSONファイルがあり、それを配列に解析してこの配列を使用してクリック可能なリストを作成したいとします。メニューの種類を作成するための項目。この例のスクリーンショットは以下のとおりです。私は配列からこれを作成する方法を知っているAndroidのリストビューでメニュー "ツリー"として使用されるJSONファイルの解析

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

、私が午前問題は、私は、このリストビューを作成することができますので、私は配列に必要なものを解析しています。ここに私の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" 
      } 
     ] 
    } 
}  

"weapons"と "armour"で始まるメニューがあります。そこから、「Weapons」をクリックすると、「Ranged」または「Melee」のいずれかを選択できる新しいメニューが表示されます。そして、 "Ranged"から "Bow"または "Crossbow"のいずれかを持つでしょう。誰かがこれを配列に解析するのを助けることができるので、これを達成できますか?私は数日間このことに苦労してきました。ありがとう!

答えて

0

あなたのタスクには "JSON Simple"ライブラリを使用できます。 いくつかの情報についてJSON Simpleここ

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

あなたのJavaクラスにJSONテキストをデシリアライズするためにGSONを使用することができます。そこから、選択したアダプタでクラスを使用してメニューを作成することができます(または、カスタムメニューを作成する場合は繰り返します)。

0

これは次のように解決できます。

json構造からPOJOを作成します。 here

ソースタイプをJSON、注釈スタイルをなしに設定すると、簡単に実行できます。 このツールは、完全な階層を持つモデルクラスの作成に役立ちます。

この後、GSONを使用してjsonをJavaオブジェクトにデシリアライズすることができます。その後

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

をあなただけのmenu.getNameのようなメニューオブジェクトで遊ぶことができます

menu.getDescなど、次のようにGSONは、このステップを行います
関連する問題