2017-03-07 7 views
-2

"id"と "name"の値をそれぞれHashMap<Integer, String>として保存するにはどうすればよいですか?Gson - プロパティと値を保存する方法

現在、ダンプアウトpseudoStationsは私に[{"id":0,"name":"London"}, {"id":1,"name":"Nottingham"}]を与えます。反復すると、各リスト要素に対して私にJsonObjectが与えられます。

メインクラス

public static void main(String[] args) { 
    Gson gson = new Gson(); 
    BufferedReader br = null; 

    try { 
     br = new BufferedReader(new FileReader("stations.json")); 
     StationManager sm = gson.fromJson(br, StationManager.class); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } finally { 
     if (br != null) { 
      closeBufferedReader(br); 
     } 
    } 
} 

駅マネージャークラス

public class StationManager { 
    @SerializedName("pseudoStations") 
    @Expose 
    private List<JsonObject> pseudoStations = null; 

    public void setPseudoStations(List<JsonObject> pseudoStations) { 
     this.pseudoStations = pseudoStations; 
    } 
} 

stations.json

{ 
    "pseudoStations":[ 
    { 
     "id": 0, 
     "name": "London" 
    }, 
    { 
     "id": 1, 
     "name": "Nottingham" 
    } 
    ] 
} 
+1

「HashMap 」または「id」と「name」のキーと値のペアをどのように保存する必要があると思いますか分かりません。これらの名前に対応する2つのフィールドを持つPOJOを作成します。 'pseudoStations'をそのPOJOの' List'に変更してください。 –

+0

プロパティの名前とIDを持つクラスステーションを作成し、そのクラスにJsonをマップします。Jsonの各ステーションのクラスの新しいインスタンスを作成します – Mero

答えて

0

次のことができますループthroug h StationManagerからJSONObjectのListを取得し、そのデータをHashMapに追加します。

public static void main(String[] args) { 
    Map<Integer, String> output = new HashMap<Integer, String>(); 
    Gson gson = new Gson(); 
    BufferedReader br = null; 

    try { 
     br = new BufferedReader(new FileReader("stations.json")); 
     StationManager sm = gson.fromJson(br, StationManager.class); 
     List<JsonObject> listOfObjs = sm.getPseudoStations(); 
     for(JsonObject obj: listOfObjs){ 
      output.put(obj.getInt("id"), obj.getString("name")); 
     } 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } finally { 
     if (br != null) { 
      closeBufferedReader(br); 
     } 
    } 
} 
関連する問題