gpt4 book ai didi

java - Gson HTTP 响应对象

转载 作者:行者123 更新时间:2023-12-02 11:06:38 25 4
gpt4 key购买 nike

我是第一次使用 Gson 库。我正在发出 HTTP 请求并拉取响应(JSON 响应),并且需要拉取特定结果。

StringBuilder response;
try (BufferedReader in = new BufferedReader( new InputStreamReader(connection.getInputStream()))) {
String line;
response = new StringBuilder();
while((line = in.readLine()) != null) {
response.append(line);
}
}

Gson gson = new GsonBuilder()
.setPrettyPrinting()
.create();
System.out.println(gson.toJson(response));

响应如下所示,我只需要提取cardBackId:

[{\"cardBackId\":\"0\",\"name\":\"Classic\",\"description\":\"The only card back you\u0027ll ever need.\",\"source\":\"startup\",\"sourceDescription\":\"Default\",\"enabled\":true,\"img\":\"http://wow.zamimg.com/images/hearthstone/backs/original/Card_Back_Default.png\",\"imgAnimated\":\"http://wow.zamimg.com/images/hearthstone/backs/animated/Card_Back_Default.gif\",\"sortCategory\":\"1\",\"sortOrder\":\"1\",\"locale\":\"enUS\"

最佳答案

您可以使用JSONPath (这是一个用于选择 JSON 对象部分的 Java 库)从字符串中提取您需要的部分。

或者,您可以编写一个仅包含所需字段的类:

public class CardBackIdResponse {
public int cardBackId;
}

然后使用 Gson 将 JSON 解码到您的对象中:

CardBackIdResponse[] cardBackIdResponses = gson.fromJson(response.toString(), CardBackIdResponse[].class);
System.out.println("cardBackId = " + cardBackIdResponses[0].cardBackId);

当从 JSON 中解码一个对象时,如果 Gson 无法在对象中找到一个字段来填充 JSON 中的值,它只会丢弃该值。这就是我们可以在这里使用的原则。

编辑:更改上面的答案以按照 this SO question 处理 JSON 数组.

关于java - Gson HTTP 响应对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50918083/

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