GSON 解析 HashMap 为相同位置的 List
GSON parse HashMap to List with same positions
例如我有 json:
{
"1" : {...},
"5" : {...},
"2" : {...}
}
我想将其解析为具有相同元素位置的列表:
所以 id = "1" 的元素将在列表中的第 0 个位置,id="5" 的第 1 个位置,id="2" 的第 2 个位置。
如果我这样做:
HashMap<String, Object> res = gson.fromJson(data.toString(), new TypeToken<HashMap<String, <MyClass>>() {}.getType());
然后使用迭代器获取元素并添加到列表中:
Set<Map.Entry<String, Object>> set = res.entrySet();
Iterator<Map.Entry<String, Object>> iterator = set.iterator();
while (iterator.hasNext()) {
mMyList.add(0, (MyClass)entry.getValue());
}
我将拥有与输入中不同的元素位置 json。
如果我尝试这样解析:
HashMap<String, JsonObject> threadsJSON = new HashMap<String, JsonObject>();
resJSON = gson.fromJson(data.toString(), new TypeToken<HashMap<String, JsonObject>>() {}.getType());
List<MyClass> msgs = new ArrayList<MyClass>();
Iterator itr = res.keySet().iterator();
while (itr.hasNext()) {
String keyId = itr.next().toString();
msgs.add(gson.fromJson(resJSON.get(keyId), MyClass.class));
}
我将采用与输入中不同的位置的列表 json。
那么,我应该如何解析 json 以使输出列表中的元素位置相同?
HashMap 不保证迭代顺序。尝试使用 LinkedHashMap(保证 属性)。
例如我有 json:
{
"1" : {...},
"5" : {...},
"2" : {...}
}
我想将其解析为具有相同元素位置的列表:
所以 id = "1" 的元素将在列表中的第 0 个位置,id="5" 的第 1 个位置,id="2" 的第 2 个位置。
如果我这样做:
HashMap<String, Object> res = gson.fromJson(data.toString(), new TypeToken<HashMap<String, <MyClass>>() {}.getType());
然后使用迭代器获取元素并添加到列表中:
Set<Map.Entry<String, Object>> set = res.entrySet();
Iterator<Map.Entry<String, Object>> iterator = set.iterator();
while (iterator.hasNext()) {
mMyList.add(0, (MyClass)entry.getValue());
}
我将拥有与输入中不同的元素位置 json。
如果我尝试这样解析:
HashMap<String, JsonObject> threadsJSON = new HashMap<String, JsonObject>();
resJSON = gson.fromJson(data.toString(), new TypeToken<HashMap<String, JsonObject>>() {}.getType());
List<MyClass> msgs = new ArrayList<MyClass>();
Iterator itr = res.keySet().iterator();
while (itr.hasNext()) {
String keyId = itr.next().toString();
msgs.add(gson.fromJson(resJSON.get(keyId), MyClass.class));
}
我将采用与输入中不同的位置的列表 json。
那么,我应该如何解析 json 以使输出列表中的元素位置相同?
HashMap 不保证迭代顺序。尝试使用 LinkedHashMap(保证 属性)。