TokensRegex响应(web api)如下所示,数组列表按数字顺序排列。有没有办法改变格式,或者有什么理由必须这样做?否则,很难对其进行反序列化或对结果编写查询。
{
"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
}
]
}
匹配是映射的原因是允许命名捕获组。因此,未命名组在任意索引上设置键,但命名组将具有更合理的键。
您可以使用Json.Net的LINQ-to-Json API将此Json反序列化为合理的内容。
首先,定义一个类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();
Fiddle:https://dotnetfiddle.net/hU4iTp