【发布时间】: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<Integer, String>或者它如何能够存储你的id和name键值对。创建一个 POJO,其中包含与这些名称对应的两个字段。并将您的pseudoStations更改为该 POJO 的List。 -
使用属性名称和 id 创建一个 Class Station 并将 Json 映射到它,该类为您的 Json 中的每个站创建一个新的类实例