在Spring Social Tweeter中,JSON如何成为Tweet,RestTemplate.getObject <t>如何工作?</t>

时间:2015-04-02 18:52:46

标签: java spring rest spring-social-twitter

大家。

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

如何将JSON(源1)转换为.JAVA(源2)。

当我注意到&#34;坐标&#34;时出现了这个问题。在TweetData中,而不是Tweet的属性。

提前感谢您的帮助!

修改 我找到了进行反序列化和答案的课程,并在@Sotirios Delimanolis先生的暗示下发布了它。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

关注@Sotirios Delimanolis后,我四处寻找 HttpMessageConverter 的工作原理。 HttpMessageConverter 实际上被 Spring Social Twitter api中的大部分反序列化所使用。

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

因此,aswer就在这里:

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模型对象一样,因为JSON结构各不相同   搜索API和时间轴API之间。这个解串器   确定正在使用哪个结构并从中创建推文。   @author Craig Walls

我很抱歉打扰你们这个愚蠢的问题,但我觉得在这里推动这个答案可能有助于人们登陆Spring开发中找到自己的方式。