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