c#中Google's翻译API的反序列化结果

本文关键字:API 翻译 反序列化 结果 Google | 更新日期: 2023-09-27 18:11:37

我正在尝试使用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"}
    ]
}

知道我做错了什么吗?

感谢

p。有必要提一下,我是这样反序列化的:TranslateResult translateResult = js.Deserialize <TranslateResult>(json);

c#中Google's翻译API的反序列化结果

我怀疑你根本不需要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#代码中使用讨厌的属性名)