大家。
在 Spring Social Twitter 中,我们使用RestTemplate.getObject<T>()
从REST端点检索和反序列化数据。它完成它的工作,它非常整洁!但它是如何做到的?
如何将JSON(源1)转换为.JAVA(源2)。
当我注意到&#34;坐标&#34;时出现了这个问题。在TweetData中,而不是Tweet的属性。
提前感谢您的帮助!
修改 我找到了进行反序列化和答案的课程,并在@Sotirios Delimanolis先生的暗示下发布了它。
答案 0 :(得分:1)
Spring使用HttpMessageConverter
个实例的集合将请求或响应正文内容转换为自定义类型。对于JSON内容类型,Spring有MappingJackson2HttpMessageConverter
和GsonHttpMessageConverter
(取决于您的版本)。
假设您的意思是RestTemplate#getForObject
,则将目标类型指定为Class
参数。 Spring会将该目标类型传递给适当的转换器并执行反序列化。
答案 1 :(得分:1)
关注@Sotirios Delimanolis后,我四处寻找 HttpMessageConverter
的工作原理。 HttpMessageConverter
实际上被 Spring Social Twitter api中的大部分反序列化所使用。
然而,对于Tweets(其JSON与Tweet.java结构有很大不同),我发现我们使用了一个名为 TweetDeserializer.java
的对象(自我解释,对吗?)< / p>
因此,aswer就在这里:
Craig Walls 在文档docs中描述了它:
用于推文的自定义杰克逊解串器。推文无法简单映射 像其他Twitter模型对象一样,因为JSON结构各不相同 搜索API和时间轴API之间。这个解串器 确定正在使用哪个结构并从中创建推文。 @author Craig Walls
我很抱歉打扰你们这个愚蠢的问题,但我觉得在这里推动这个答案可能有助于人们登陆Spring开发中找到自己的方式。