在 Spring Social Tweeter 中,JSON 是如何成为推文的,RestTemplate.getObject<T> 是如何运作的?
In Spring Social Tweeter, how does JSON become a Tweet, and how does RestTemplate.getObject<T> work?
各位。
在 Spring 社交 Twitter 中,我们使用 RestTemplate.getObject<T>()
从 REST 端点检索和反序列化数据。它完成了它的工作并且非常整洁!但是它是怎么做到的?
如何将 JSON(来源 1)翻译成 .JAVA(来源 2)。
- 来源 1:https://dev.twitter.com/overview/api/tweets
- 来源 2:https://github.com/spring-projects/spring-social-twitter/blob/master/spring-social-twitter/src/main/java/org/springframework/social/twitter/api/Tweet.java
当我注意到 "coordinates" 在 TweetData 中,而不是作为 Tweet 的属性时,这个问题就出现了。
提前感谢您的帮助!
编辑
感谢@Sotirios Delimanolis 先生的提示,我找到了执行反序列化的 class 和答案并将其发布。
Spring 使用了 HttpMessageConverter
instances to convert request or response body content to a custom type. For JSON content types, Spring has MappingJackson2HttpMessageConverter
and GsonHttpMessageConverter
的集合(取决于你的版本)。
假设您的意思是 RestTemplate#getForObject
,您将目标类型指定为 Class
参数。 Spring 会将目标类型传递给适当的转换器并执行反序列化。
跟随@Sotirios Delimanolis,我四处寻找 HttpMessageConverter
的工作原理。 HttpMessageConverter
实际上被 Spring Social Twitter api 中的大部分反序列化所使用.
然而,对于推文(其 JSON 与 Tweet.java 结构有很大差异),我发现我们使用了一个名为 TweetDeserializer.java
(自我解释,对吧?)
因此,答案就在这里:
Craig Walls 在文件文档中对其进行了描述:
Custom Jackson deserializer for tweets. Tweets can't be simply mapped
like other Twitter model objects because the JSON structure varies
between the search API and the timeline API. This deserializer
determine which structure is in play and creates a tweet from it.
@author Craig Walls
很抱歉用这个愚蠢的问题打扰你们,但我觉得把这个答案推到这里可能会帮助人们在 Spring 开发中找到自己的出路。
各位。
在 Spring 社交 Twitter 中,我们使用 RestTemplate.getObject<T>()
从 REST 端点检索和反序列化数据。它完成了它的工作并且非常整洁!但是它是怎么做到的?
如何将 JSON(来源 1)翻译成 .JAVA(来源 2)。
- 来源 1:https://dev.twitter.com/overview/api/tweets
- 来源 2:https://github.com/spring-projects/spring-social-twitter/blob/master/spring-social-twitter/src/main/java/org/springframework/social/twitter/api/Tweet.java
当我注意到 "coordinates" 在 TweetData 中,而不是作为 Tweet 的属性时,这个问题就出现了。
提前感谢您的帮助!
编辑 感谢@Sotirios Delimanolis 先生的提示,我找到了执行反序列化的 class 和答案并将其发布。
Spring 使用了 HttpMessageConverter
instances to convert request or response body content to a custom type. For JSON content types, Spring has MappingJackson2HttpMessageConverter
and GsonHttpMessageConverter
的集合(取决于你的版本)。
假设您的意思是 RestTemplate#getForObject
,您将目标类型指定为 Class
参数。 Spring 会将目标类型传递给适当的转换器并执行反序列化。
跟随@Sotirios Delimanolis,我四处寻找 HttpMessageConverter
的工作原理。 HttpMessageConverter
实际上被 Spring Social Twitter api 中的大部分反序列化所使用.
然而,对于推文(其 JSON 与 Tweet.java 结构有很大差异),我发现我们使用了一个名为 TweetDeserializer.java
(自我解释,对吧?)
因此,答案就在这里:
Craig Walls 在文件文档中对其进行了描述:
Custom Jackson deserializer for tweets. Tweets can't be simply mapped like other Twitter model objects because the JSON structure varies between the search API and the timeline API. This deserializer determine which structure is in play and creates a tweet from it. @author Craig Walls
很抱歉用这个愚蠢的问题打扰你们,但我觉得把这个答案推到这里可能会帮助人们在 Spring 开发中找到自己的出路。