Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将GetStringAsync结果反序列化为翻译文本_C#_Json_Google Api_Translation_Google Translation Api - Fatal编程技术网

C# 如何将GetStringAsync结果反序列化为翻译文本

C# 如何将GetStringAsync结果反序列化为翻译文本,c#,json,google-api,translation,google-translation-api,C#,Json,Google Api,Translation,Google Translation Api,我有一个工作方法来翻译文本使用谷歌API如下 public string TranslateText(string input, string sourceLanguage, string targetLanguage) { string sourceCulture = LanguageCultureGenerator.GenerateCulture(sourceLanguage); string targetCulture = LanguageCultureGenerator.

我有一个工作方法来翻译文本使用谷歌API如下

public string TranslateText(string input, string sourceLanguage, string targetLanguage)
{
    string sourceCulture = LanguageCultureGenerator.GenerateCulture(sourceLanguage);
    string targetCulture = LanguageCultureGenerator.GenerateCulture(targetLanguage);

    string url = String.Format("https://translate.googleapis.com/translate_a/single?client=gtx&sl=
{0}&tl={1}&dt=t&q={2}",
   sourceCulture, targetCulture, Uri.EscapeUriString(input));

    HttpClient client = new HttpClient();
    string result = client.GetStringAsync(url).Result;

    var jsonData = new JavaScriptSerializer().Deserialize<List<dynamic>>(result);     
    var translationItems = jsonData[0];

    string translation = "";

    foreach (object item in translationItems)
    {
        IEnumerable translationLineObject = item as IEnumerable;
        IEnumerator translationLineString = translationLineObject.GetEnumerator();
        translationLineString.MoveNext();

        translation += string.Format(" {0}", Convert.ToString(translationLineString.Current));
    }
    if (translation.Length > 1)
    { translation = translation.Substring(1); }
    return translation;
}
 var jsonData = JsonConvert.DeserializeObject(result);
然后我在这里得到一个错误

var translationItems = jsonData[0];

错误是;'无法将带[]的索引应用于“object”类型的表达式。如何解决此问题并使此方法与Newtonsoft Json配合使用以执行转换操作?

您忘记传递要反序列化的类型:

 var jsonData = JsonConvert.DeserializeObject<List<dynamic>>(result);
var jsonData=JsonConvert.DeserializeObject(结果);

反序列化程序需要知道它应该创建哪个.NET类型的实例,否则它将创建一个
对象

,以消除错误,非常感谢您的快速回答。当我试图理解事物如何在这里工作的基本结构时,你能解释一下背后的逻辑吗?你考虑过使用官方的客户端库吗?
 var jsonData = JsonConvert.DeserializeObject<List<dynamic>>(result);