TokensRegex json响应

时间:2016-04-10 08:46:56

标签: json json.net stanford-nlp

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

2 个答案:

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

小提琴:https://dotnetfiddle.net/hU4iTp