配置Google HTTP客户端的GsonFactory

时间:2016-01-09 05:32:04

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

我正在尝试设置解析来自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吗?效率似乎不高。

1 个答案:

答案 0 :(得分:0)

不幸的是,我不确定这是否可以通过JsonFactory的自定义实现来完成。 GsonFactory使用gson提供的JsonParser,这只是一个递归的体面实现,不会进行任何自定义转换。

我处于类似情况,我只是通过构建器创建一个Gson对象,因此我可以相应地进行自定义。