Java Gson-如何存储属性和值

Java Gson-如何存储属性和值,java,gson,Java,Gson,如何将id和name的值分别存储为HashMap 目前,丢弃伪站会给我[{id:0,name:London},{id:1,name:Nottingham}]。遍历只会为每个列表元素提供一个JsonObject 主类 车站经理班 您可以从StationManager循环浏览JSONObject列表,并将数据添加到HashMap public static void main(String[] args) { Map<Integer, String> output = new H

如何将id和name的值分别存储为HashMap

目前,丢弃伪站会给我[{id:0,name:London},{id:1,name:Nottingham}]。遍历只会为每个列表元素提供一个JsonObject

主类

车站经理班


您可以从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);
        }
    }
}

我不明白你为什么认为你需要一个HashMap,或者它是如何存储你的id和name键值对的。创建一个POJO,其中包含与这些名称对应的两个字段。并将伪站点更改为该POJO的列表。创建一个具有属性名称和id的类站点,并将Json映射到该类。该类为Json中的每个站点创建一个新的类实例
public class StationManager {
    @SerializedName("pseudoStations")
    @Expose
    private List<JsonObject> pseudoStations = null;

    public void setPseudoStations(List<JsonObject> pseudoStations) {
        this.pseudoStations = pseudoStations;
    }
}
{
  "pseudoStations":[
    {
      "id": 0,
      "name": "London"
    },
    {
      "id": 1,
      "name": "Nottingham"
    }
  ]
}
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);
        }
    }
}