簡體   English   中英

在Spring Social Tweeter中,JSON如何成為Tweet,以及RestTemplate.getObject如何 <T> 工作?

[英]In Spring Social Tweeter, how does JSON become a Tweet, and how does RestTemplate.getObject<T> work?

大家

Spring Social Twitter中,我們使用RestTemplate.getObject<T>()從REST端點檢索和反序列化數據。 它能完成工作,而且非常整潔! 但是它是怎么做到的呢?

如何將JSON(源1)轉換為.JAVA(源2)。

當我注意到“坐標”位於TweetData內部而不是作為Tweet的屬性時,出現了此問題。

我在這里先向您的幫助表示感謝!

編輯我找到了進行反序列化的類和答案,並通過@Sotirios Delimanolis先生的提示將其發布。

Spring使用HttpMessageConverter實例的集合將請求或響應正文內容轉換為自定義類型。 對於JSON內容類型,Spring具有MappingJackson2HttpMessageConverterGsonHttpMessageConverter (取決於您的版本)。

假設您要使用RestTemplate#getForObjectRestTemplate#getForObject目標類型指定為Class參數。 Spring會將目標類型傳遞給適當的轉換器並執行反序列化。

在@Sotirios Delimanolis之后,我四處尋找HttpMessageConverter工作方式。 實際上, Spring Social Twitter api中的大多數反序列化都使用HttpMessageConverter

但是,對於Tweets(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模型對象那樣簡單地映射,因為JSON結構在搜索API和時間軸API之間有所不同。 該解串器確定正在使用的結構並從中創建推文。 @作者克雷格·沃爾斯

我很抱歉讓您遇到這個愚蠢的問題,但是我覺得將這個答案放在這里可能會幫助進入Spring開發的人們找到解決之道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM