3

我一直在尝试使用 RESTful 方法使用 Google Transliterate API,因为它很容易通过服务器端语言(此处为 C#)来实现。

因此,我遇到了这种 URL 格式:http://www.google.com/transliterate/indic?tlqt=1&langpair=en|hi&text=bharat%2Cindia&tl_app=3以以下格式返回 JSON:

[
{
"ew" : "bharat",
"hws" : [
"भारत","भरत","भरात","भारात","बहरत",
]
},
{
"ew" : "india",
"hws" : [
"इंडिया","इन्डिया","इण्डिया","ईन्डिया","इनडिया",
]
},
] 

我尝试获取 JSON HttpWebRequestHttpWebResponse但它在 Web 浏览器上以 Unicode 格式返回值,例如:

[ { "ew" : "bharat", "hws" : [ "\u092D\u093E\u0930\u0924","\u092D\u0930\u0924","\u092D\u0930\u093E\u0924","\u092D\u093E\u0930\u093E\u0924","\u092C\u0939\u0930\u0924", ] }, { "ew" : "india", "hws" : [ "\u0907\u0902\u0921\u093F\u092F\u093E","\u0907\u0928\u094D\u0921\u093F\u092F\u093E","\u0907\u0923\u094D\u0921\u093F\u092F\u093E","\u0908\u0928\u094D\u0921\u093F\u092F\u093E","\u0907\u0928\u0921\u093F\u092F\u093E", ] }, ]

所以,我应用了这篇文章并通过它传递了 JSON字符串,它返回:

[ { "ew" : "bharat", "hws" : [ "भारत","भरत","भरात","भारात","बहरत", ] }, { "ew" : "india", "hws" : [ "इंडिया","इन्डिया","इण्डिया","ईन्डिया","इनडिया", ] }, ]

第一个问题:到目前为止我做得对吗?因为在浏览器中它不显示最后一个" ] ",但是" ] "存在于 HTML 源代码中(不确定为什么会发生这种情况)。另外,当我尝试解析它时,使用(使用这种技术我可能错了):

var jss = new JavaScriptSerializer();
var dict = jss.Deserialize<Dictionary<string, dynamic>>(the_JSON_string);

它给我错误说:

Invalid array passed in, extra trailing ','.

第二个问题:如果到目前为止我做得对,我可以获得一些帮助来解析印地语单词吗?我应该采取什么方法最好使用System.Web.Script.Serialization;. 最终我想获取印地语文本进行进一步处理。

请帮忙,谢谢。

4

2 回答 2

3

我会推荐Json.Net来解析 json 字符串。下面的代码(使用您的示例字符串)有效,您不需要做任何事情来取消转义这些字符。Json 解析器将为您处理它。

string json = @"[ { ""ew"" : ""bharat"", ""hws"" : [ ""\u092D\u093E\u0930\u0924"",""\u092D\u0930\u0924"",""\u092D\u0930\u093E\u0924"",""\u092D\u093E\u0930\u093E\u0924"",""\u092C\u0939\u0930\u0924"", ] }, { ""ew"" : ""india"", ""hws"" : [ ""\u0907\u0902\u0921\u093F\u092F\u093E"",""\u0907\u0928\u094D\u0921\u093F\u092F\u093E"",""\u0907\u0923\u094D\u0921\u093F\u092F\u093E"",""\u0908\u0928\u094D\u0921\u093F\u092F\u093E"",""\u0907\u0928\u0921\u093F\u092F\u093E"", ] }, ]";

dynamic obj = JsonConvert.DeserializeObject(json);
MessageBox.Show(obj[0].hws[0].ToString());
于 2012-08-08T10:17:18.340 回答
0

我想你可以像下面这样删除最后一个逗号

  the_JSON_string =  the_JSON_string.Remove(the_JSON_string.LastIndexOf(','));
于 2012-08-08T10:13:33.120 回答