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

标签 java json spring flurry

我正在尝试使用 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/

相关文章:

java - 通过 Java 从终端运行 R

java - Jersey 基于角色的实体过滤 : Jackson implementation

json - 如何忽略 Angular7 中的对象字段

java - Spring MVC 表单验证,带有 @NotEmpty 注解,一个 POJO 具有多个表单

java - Firebase 使用 java(非 Android)检索信息

java - 将数据从一个 jsp 传递到另一个 jsp 并显示该 jsp View

java - Java 中的 OOP : Class inheritance with method chaining

arrays - 在 Angular cli中将json字符串转换为对象数组

java - spring框架4.2.1版本中无法配置资源映射

java - 如何在c3p0数据源中使用mysql自定义端口?