3

サーバー側の言語 (ここでは C#) を介して簡単に使用できるため、RESTful アプローチを使用して Google Transliterate API を使用しようとしています。

そのため、次の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 ','.

2 番目の質問: 今のところ問題がなければ、ヒンディー語の構文解析を手伝ってもらえますか? 好ましくはどのようなアプローチを取るべきですかSystem.Web.Script.Serialization;。最終的には、さらに処理するためにヒンディー語のテキストを取得したいと考えています。

助けてください、ありがとう。

4

2 に答える 2

3

json 文字列を解析するには、 Json.Netをお勧めします。以下のコード(サンプル文字列を使用)は機能し、これらの文字をエスケープ解除するために何もする必要はありません。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 に答える