【问题标题】:Gson - How do you store properties and valuesGson - 你如何存储属性和值
【发布时间】:2017-03-07 16:55:35
【问题描述】:

如何将“id”和“name”的值分别存储为HashMap<Integer, String>

目前,转储 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"
    }
  ]
}

【问题讨论】:

  • 我不明白你为什么认为你需要一个 HashMap&lt;Integer, String&gt; 或者它如何能够存储你的 idname 键值对。创建一个 POJO,其中包含与这些名称对应的两个字段。并将您的 pseudoStations 更改为该 POJO 的 List
  • 使用属性名称和 id 创建一个 Class Station 并将 Json 映射到它,该类为您的 Json 中的每个站创建一个新的类实例

标签: java gson


【解决方案1】:

您可以从 StationManager 循环访问 JSONObject 列表并将数据添加到 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);
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多