gpt4 book ai didi

java - Gson:有没有办法使用 GSON 只解析特定的内部 JSON 列表?

转载 作者:行者123 更新时间:2023-11-29 10:02:38 30 4
gpt4 key购买 nike

我有一个看起来像这样的 json

{response:{"status":{"....."},data:[{"name":"Alice","id":"123"},{"name":"Jack","id":"345"},......]}

解析这个的类如下所示:-

public class TheData{
public List<Users> data;
}

public class Users{
public String name;
public String id;
}

然后:-

TheData theData=gson.fromJson(jsonresponse,TheData.class)

所有这些都很简单,但是 json 包含在“response”标签中。我可以为相同的对象创建另一个类并对其进行解析,但是有没有其他方法可以用 GSON 处理这个问题。

最佳答案

出于某种我现在不知道的原因,Gson 对象将您的 JSON 字符串解析为原始字符串。

而是使用 JsonParser 获取 JsonElement 作为 JsonObject,您可以从中检索内部 “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);

添加一些toString(),打印

[[name = Alice, id = 123], [name = Jack, id = 345]]

Gson 对象可以将内部 JsonElement 解析为 TheData 对象,忽略 status 字段。

关于java - Gson:有没有办法使用 GSON 只解析特定的内部 JSON 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19204465/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com