2016-04-10 15 views
0

TokensRegexレスポンス(web api)は、配列順に番号が付けられた配列リストを持つ次のようなものです。 フォーマットを変更する方法はありますか、それともそのようにする必要がありますか? それ以外の場合は、デシリアライズしたり、結果を照会することは困難です。TokensRegex jsonレスポンス

{ 
    "sentences": [ 
    { 
     "0": { 
     "text": "huge success", 
     "begin": 4, 
     "end": 6 
     }, 
     "1": { 
     "text": "new venture", 
     "begin": 17, 
     "end": 19 
     }, 
     "2": { 
     "text": "comfort zone", 
     "begin": 26, 
     "end": 28 
     }, 
     "length": 3 
    } 
    ] 
} 

答えて

0

あなたは賢明な何かにこのJSONをデシリアライズするJson.NetのLINQ-to-JSON APIを使用することができます。

まず、このようなクラスPhraseを定義します。

class Phrase 
{ 
    public string Text { get; set; } 
    public int Begin { get; set; } 
    public int End { get; set; } 
} 

次にあなたがフレーズのリストを取得するには、この操作を行うことができます。

JObject obj = JObject.Parse(json); 

List<Phrase> phrases = 
    obj["sentences"][0] 
     .Children<JProperty>() 
     .Where(jp => jp.Value.Type == JTokenType.Object) 
     .Select(jp => jp.Value.ToObject<Phrase>()) 
     .ToList(); 

フィドル:https://dotnetfiddle.net/hU4iTp

1

理由マッチをマップは名前付きキャプチャグループを許可することです。したがって、名前のないグループは任意のインデックスにキーインされますが、名前付きグループはより合理的なキーを持ちます。