2016-04-10 33 views
0

TokensRegex yanıtı (web api), sayısal sırayla şekillendirilmiş bir dizi listesiyle şöyledir. Biçimi değiştirmenin bir yolu var mı, yoksa herhangi bir sebep var mı? Aksi taktirde, seri hale getirilmesi ya da sonuç üzerinde bir sorgu yazılması zor.TokensRegex json yanıtı

{ 
    "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 
    } 
    ] 
} 

cevap

0

Sen mantıklı bir şey haline bu JSON serisini Json.Net en LINQ-to-JSON API kullanabilirsiniz.

Birincisi, böyle bir sınıf Phrase tanımlayın:

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(); 

Fiddle: https://dotnetfiddle.net/hU4iTp

1

nedeni maçları

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

Sonra ifadelerin bir listesini elde etmek için bunu yapabilirsiniz isimlendirilmiş yakalama gruplarına izin vermektir. Bu nedenle, adlandırılmamış gruplar rasgele bir dizine girilir, ancak adlandırılmış gruplar daha makul bir anahtara sahip olur.