gpt4 book ai didi

java - 无法反序列化来自 Flurry API 的 json 响应

转载 作者:行者123 更新时间:2023-12-02 04:35:28 26 4
gpt4 key购买 nike

我正在尝试使用 Flurry 的 REST API 将一些统计数据读取到我的 Spring 应用程序中。然而,我的对象返回时所有字段的值均为空。我认为这是因为 JSON 响应将 @ 符号添加到响应中的非数组字段中。我收到的回复如下所示:

{
"@endDate": "2015-06-16",
"@metric": "PageViews",
"@startDate": "2015-06-16",
"@generatedDate": "6/16/15 5:06 PM",
"@version": "1.0",
"day": [
{
"@date": "2015-06-16",
"@value": "0"
}
]
}

我用来发出请求的代码如下所示:

RestTemplate restTemplate = new RestTemplate();
FlurryAppMetric appMetric = restTemplate.getForObject(url, FlurryAppMetric.class);
return appMetric;

其中 FlurryAppMetric 如下(省略 getter 和 setter):

public class FlurryAppMetric {
private String metric;
private String startDate;
private String endDate;
private String generatedDate;
private String version;
private ArrayList<FlurryMetric> day;
}

public class FlurryMetric {
private String date;
private String value;
}

一种可能的解决方案是将其全部解析为 map ,但如果可能的话,我想利用它们公开的映射器。

如果有某种方法可以发出 GET 请求并以字符串形式接收正文,我将能够清理响应并尝试将其传递给映射器。

最佳答案

您应该能够使用 GSON 解析它,使用 @SerializedName 注释,如下所示:

public class FlurryAppMetric {
@SerializedName("@metric");
private String metric;

@SerializedName("@startDate");
private String startDate;

@SerializedName("@endDate");
private String endDate;

@SerializedName("@generatedDate");
private String generatedDate;

@SerializedName("@versionDate");
private String version;

@SerializedName("day");
private ArrayList<FlurryMetric> day;
}

public class FlurryMetric {
@SerializedName("@date");
private String date;

@SerializedName("@value");
private String value;
}

然后像这样使用Gson:

    Gson gson = new Gson();
gson.fromJson(<string json source>, FlurryApiMetric.class);

关于java - 无法反序列化来自 Flurry API 的 json 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30880500/

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