【问题标题】:Configuring the GsonFactory of Google HTTP Client配置 Google HTTP Client 的 GsonFactory
【发布时间】:2016-04-13 21:41:49
【问题描述】:

我正在尝试为解析来自 Google HTTP 客户端请求的 JSON 对象设置日期格式。由于日期格式问题,我尝试直接解析为对象request.execute().parseAs(..) 的行不起作用。对象返回时没有任何值。下面的两行工作得很好,因为我可以设置日期格式。有没有办法以某种方式在 GsonFactory 上设置日期格式?

public class Main {
    static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
    static final JsonFactory JSON_FACTORY = new GsonFactory();

    public static void main(String[] args) throws IOException {

        HttpRequestFactory requestFactory =
                HTTP_TRANSPORT.createRequestFactory(new HttpRequestInitializer() {
                    @Override
                    public void initialize(HttpRequest request) {
                        request.setParser(new JsonObjectParser(JSON_FACTORY));
                    }
                });

        SomeURL url = new SomeURL("");
        HttpRequest request = requestFactory.buildGetRequest(url);

        MatchBlock[] blocks = request.execute().parseAs(MatchBlock[].class);
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create();
        MatchBlock[] blocks2 = gson.fromJson(request.execute().parseAsString(),MatchBlock[].class);
    }

}

代码大部分是从这里提取的:sample.我已经尝试过 JacksonFactory 和 GsonFactory,包括在使用 Jackson 时使用 @JsonFormat 注释,似乎都没有工作。

我应该先解析为字符串,然后再解析为 JSON 对象,而不是尝试使用 parseAs 进行解析吗?似乎效率较低。

【问题讨论】:

    标签: java json jackson gson google-http-client


    【解决方案1】:

    不幸的是,我不确定这是否可以在没有 JsonFactory 的自定义实现的情况下完成。 GsonFactory 使用了 gson 提供的 JsonParser,这只是一个不做任何自定义转换的递归体面实现。

    我处于类似情况,我将通过构建器创建一个Gson 对象,以便我可以进行相应的自定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-29
      • 2021-09-01
      • 2013-09-10
      • 2014-09-17
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多