gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 07:53:43 29 4
gpt4 key购买 nike

我有一种使用 Google 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;
}
问题是,这个类在一个类型为 .Net Framework 的库中,我想将它移动到一个类型为 .Net Core 的类库中,在我移动它之后我意识到 'JavaScriptSerializer' 不能用于这个图书馆的类型。相反,我更改了这行代码;
 //Redundant
var jsonData = new JavaScriptSerializer().Deserialize<List<dynamic>>(result);
使用 Newtonsoft Json 如下;
 var jsonData = JsonConvert.DeserializeObject(result);
然后我在这里收到错误;
var translationItems = jsonData[0];
错误是; '不能将带有 [] 的索引应用于'object' 类型的表达式。任何想法如何解决此问题并使此方法与 Newtonsoft Json 一起使用以执行翻译操作?

最佳答案

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

 var jsonData = JsonConvert.DeserializeObject<List<dynamic>>(result);
反序列化器需要知道它应该创建哪种 .NET 类型的实例,否则它会创建一个 object .

关于c# - 如何将 GetStringAsync 结果反序列化为翻译文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66812907/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com