Gson:有没有办法只用GSON解析特定的内部JSON列表? [英] Gson:Is there a way to parse only specific internal JSON lists using GSON?
问题描述
{response:{status:{....... },数据:[{ 名称 : 爱丽丝, ID: 123},{ 名称: 杰克, ID: 345},......]}
解析它的类如下所示: - $ /
public class TheData {
public List< Users>数据;
}
public class Users {
public String name;
公共字符串ID;
}
然后: -
TheData theData = gson.fromJson(jsonresponse,TheData.class)
那么所有这些都很简单,但json被封装在一个响应标签中。我可以为此创建另一个类并获得此解析,但有没有其他方法可以使用GSON处理此问题。
出于某种原因,我现在不知道, Gson
对象会将您的JSON字符串解析为原语。 使用 JsonParser
来获取 JsonElement
为一个 JsonObject
,您可以从中检索内部response
JsonObject $ c $
//在对字符串
进行一些清理之后String str ={\response \ :{\ status\ :{\ id\ :45},\ data\ :[{\ name\ :\ Alice\,\\ \\ id\:123},{\ name\:\ Jack\,\ id\:345}]}};
JsonParser parser = new JsonParser();
JsonObject元素=(JsonObject)parser.parse(str);
JsonElement responseWrapper = element.get(response);
Gson gson = new Gson();
TheData data = gson.fromJson(responseWrapper,TheData.class);
System.out.println(data);
添加了一些 toString()
$ $ p $
[[name = Alice,id = 123],[name = Jack,id = 345]]
Gson
对象可以解析内部的 JsonElement
作为 TheData
对象,忽略状态
字段。
I have a json which looks like this
{response:{"status":{"....."},data:[{"name":"Alice","id":"123"},{"name":"Jack","id":"345"},......]}
The classes to parse this looks like below:-
public class TheData{
public List<Users> data;
}
public class Users{
public String name;
public String id;
}
And then:-
TheData theData=gson.fromJson(jsonresponse,TheData.class)
Well all this simple but the json is wrapped in a "response" tag. I can create another class for the same and get this parsed but is there any other way I can handle this with GSON.
For some reason that I do not know right now, a Gson
object parses your JSON string as a primitive.
Instead use a JsonParser
to get a JsonElement
as a JsonObject
from which you can retrieve the inner "response"
JsonObject
.
// after some cleanup of the string
String str = "{\"response\":{\"status\":{\"id\":45},\"data\":[{\"name\":\"Alice\",\"id\":123},{\"name\":\"Jack\",\"id\":345}]}}";
JsonParser parser = new JsonParser();
JsonObject element = (JsonObject)parser.parse(str);
JsonElement responseWrapper = element.get("response");
Gson gson = new Gson();
TheData data = gson.fromJson(responseWrapper, TheData.class);
System.out.println(data);
With some toString()
added, prints
[[name = Alice, id = 123], [name = Jack, id = 345]]
The Gson
object can parse the inner JsonElement
as a TheData
object, ignoring the status
field.
这篇关于Gson:有没有办法只用GSON解析特定的内部JSON列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!