TokensRegex json response



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

相关内容

  • 没有找到相关文章

最新更新