簡體   English   中英

Google的Translate API的反序列化導致C#

[英]Deserializing of Google's Translate API result in C#

我正在嘗試使用JavaScriptSerializer將Google的Translate API JSON響應反序列化為C#對象。 但是,總是說Type 'TranslateAPI.Models.Translations' is not supported for deserialization of an array. 我仔細檢查了是否已經為該對象正確創建了模型,這似乎是正確的。 這是我的模型:

TranslateResult
    public TranslateData data { get; set; }

TranslateData
    public Translations translations { get; set; }

Translations
    public TranslatedText[] translatedText { get; set; } // I have also tried List<TranslatedText> which also doesn't work

TranslatedText
    public string translatedText { get; set; }

從Google返回的json看起來像這樣:

{data: {
    translations: [
        {translatedText: "Hello world"}
    ]
}

知道我在做什么錯嗎?

謝謝

PS。 值得一提的是,我正在對它進行反序列化: TranslateResult translateResult = js.Deserialize <TranslateResult>(json);

我懷疑您根本不需要Translations類。 你有:

  • 包含data屬性的對象
  • data屬性值是一個包含translations屬性的對象
  • translations屬性值是一個數組
  • 數組的每個元素都是一個帶有translatedText屬性的對象

在我看來,您的TranslateData類應該是:

TranslateData
    public Translation[] translations { get; set; }

Translation // Renamed from TranslatedText
    public string translatedText { get; set }

(我還建議您重命名屬性以遵循常規的C#命名約定,然后根據需要應用屬性來幫助JSON轉換。我已經有一段時間沒有使用JavaScriptSerializer了,但是我敢肯定這是可行的。您不需要在C#代碼中使用討厭的屬性名稱。)

暫無
暫無

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

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