0

大家。

Spring Social Twitter中,我们用于RestTemplate.getObject<T>()从 REST 端点检索和反序列化数据。它完成了它的工作,而且非常整洁!但它是如何做到的呢?

如何将 JSON(源 1)翻译成 .JAVA(源 2)。

当我注意到“坐标”在 TweetData 内部时,这个问题就出现了,而不是作为 Tweet 的属性。

我在这里先向您的帮助表示感谢!

编辑 由于@Sotirios Delimanolis 先生的提示,我找到了进行反序列化的类和答案并将其发布。

4

2 回答 2

1

Spring 使用HttpMessageConverter实例集合将请求或响应正文内容转换为自定义类型。对于 JSON 内容类型,Spring 具有MappingJackson2HttpMessageConverterGsonHttpMessageConverter(取决于您的版本)。

假设你的意思是RestTemplate#getForObject,你指定一个目标类型作为Class参数。Spring 会将该目标类型传递给适当的转换器并执行反序列化。

于 2015-04-02T18:56:38.117 回答
1

在@Sotirios Delimanolis 之后,我四处挖掘以了解其HttpMessageConverter工作原理。HttpMessageConverter实际上,Spring Social Twitter api中的大多数反序列化都使用了 。

然而,对于推文(其 JSON 与 Tweet.java 结构有很大不同),我发现我们使用了一个名为TweetDeserializer.java(自我解释,对吗?)

因此,答案就在这里:

https://github.com/spring-projects/spring-social-twitter/blob/master/spring-social-twitter/src/main/java/org/springframework/social/twitter/api/impl/TweetDeserializer.java

Craig Walls在文件 docs 中对其进行了描述:

用于推文的自定义杰克逊反序列化器。推文不能像其他 Twitter 模型对象那样简单地映射,因为搜索 API 和时间线 API 之间的 JSON 结构不同。这个反序列化器确定哪个结构在起作用,并从中创建一条推文。@作者克雷格·沃尔斯

很抱歉用这个愚蠢的问题打扰你们,但我觉得把这个答案推到这里可能会帮助人们在 Spring 开发中找到自己的出路。

于 2015-04-02T19:16:21.143 回答