在Android上使用Gson库反序列化单个键值元素的最简单/最快的方法是什么?服务器发送类似:
{
"data": [
{
"Field1": "Value1",
"Field2": "Value2",
"Field3": "Value3"
},
{
"Field1": "Value1",
"Field2": "Value2",
"Field3": "Value3"
}
]
}
所以我需要"输入"数据值(数组)然后将值绑定到模型。好的第二部分,但我错过了第一部分。我应该使用HashMap,JsonParser还是什么?
JsonElement dataElem = new JsonParser().parse(response);
String data = dataElem.getAsJsonObject().get("data").getAsString();
bundle.putParcelableArray("models", gson.fromJson(data, Model[].class));
我接近正确的解决方案吗?非常感谢。
答案 0 :(得分:0)
以简单的方式,您可以将其解析为
<强> 1。没有Model类
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(Your_JSON_String).getAsJsonObject().get("data");
Type typeOfCollection = new TypeToken<List<Map<String, String>>>(){}.getType();
List<Map<String, String>> dataList = gson.fromJson(element, typeOfCollection);
<强> 2。使用Model类。
public class Model {
private List<Map<String,String>> data;
}
Model model= gson.fromJson(Your_JSON_String, Model.class)
答案 1 :(得分:0)
你的问题在这里:
String data = dataElem.getAsJsonObject().get("data").getAsString();
您不想要String
,您想要解析树中的实际JsonElement
:
JsonElement je = dataElem.getAsJsonObject().get("data");
然后,您对Model
数组的反序列化将起作用:
bundle.putParcelableArray("models", gson.fromJson(je, Model[].class));