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
}
]
}
答案 0 :(得分:1)
匹配是地图的原因是允许命名捕获组。因此,未命名的组键入任意索引,但命名组将具有更合理的键。
答案 1 :(得分:0)
您可以使用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();