c# - 获取字符串中文本之间的文本

标签 c# regex json string text

假设我有一个看起来像这样的字符串

{
  "_links": {
    "next": "https://api.twitch.tv/kraken/users/test_user1/follows/channels?direction=DESC&limit=25&offset=25",
    "self": "https://api.twitch.tv/kraken/users/test_user1/follows/channels?direction=DESC&limit=25&offset=0"
  },
  "follows": [
    {
      "created_at": "2013-06-02T09:38:45Z",
      "_links": {
        "self": "https://api.twitch.tv/kraken/users/test_user1/follows/channels/test_channel"
      },
      "channel": {
        "banner": null,
        "_id": 1,
        "url": "http://www.twitch.tv/test_channel",
        "mature": null,
        "teams": [

        ],
        "status": null,
        "logo": null,
        "name": "test_channel",
        "video_banner": null,
        "display_name": "test_channel",
        "created_at": "2007-05-22T10:37:47Z",
        "delay": 0,
        "game": null,
        "_links": {
          "stream_key": "https://api.twitch.tv/kraken/channels/test_channel/stream_key",
          "self": "https://api.twitch.tv/kraken/channels/test_channel",
          "videos": "https://api.twitch.tv/kraken/channels/test_channel/videos",
          "commercial": "https://api.twitch.tv/kraken/channels/test_channel/commercial",
          "chat": "https://api.twitch.tv/kraken/chat/test_channel",
          "features": "https://api.twitch.tv/kraken/channels/test_channel/features"
        },
        "updated_at": "2008-02-12T06:04:29Z",
        "background": null
      }
    },
    ...
  ]
}

channel 中的部分将出现 x 次,其中“名称”部分具有不同的值。我如何使用正则表达式或不获取上面代码中值为“test_channel”的“name”中的值。它出现的所有时间,然后将其打印到文本框

我认为我管理的唯一部分是正则表达式部分

string regex = @"(""name"":)\s+(\w+)(,""video_banner"")";

最佳答案

使用Json.Netthis site

var obj = JsonConvert.DeserializeObject<Krysvac.RootObject>(yourJsonString);
foreach(var item in obj.follows)
{
    Console.WriteLine(item.channel.name);
}

public class Krysvac
{
    public class Links
    {
        public string next { get; set; }
        public string self { get; set; }
    }

    public class Links2
    {
        public string self { get; set; }
    }

    public class Links3
    {
        public string stream_key { get; set; }
        public string self { get; set; }
        public string videos { get; set; }
        public string commercial { get; set; }
        public string chat { get; set; }
        public string features { get; set; }
    }

    public class Channel
    {
        public object banner { get; set; }
        public int _id { get; set; }
        public string url { get; set; }
        public object mature { get; set; }
        public List<object> teams { get; set; }
        public object status { get; set; }
        public object logo { get; set; }
        public string name { get; set; }
        public object video_banner { get; set; }
        public string display_name { get; set; }
        public string created_at { get; set; }
        public int delay { get; set; }
        public object game { get; set; }
        public Links3 _links { get; set; }
        public string updated_at { get; set; }
        public object background { get; set; }
    }

    public class Follow
    {
        public string created_at { get; set; }
        public Links2 _links { get; set; }
        public Channel channel { get; set; }
    }

    public class RootObject
    {
        public Links _links { get; set; }
        public List<Follow> follows { get; set; }
    }
}

如果你不想声明这些类,也可以使用dynamic关键字

dynamic obj = JsonConvert.DeserializeObject(yourJsonString);
foreach(var item in obj.follows)
{
    Console.WriteLine(item.channel.name);
}

关于c# - 获取字符串中文本之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22020684/

相关文章:

python - 如何使用正则表达式和精确文字匹配的混合来获取索引值

javascript - 向由 ReST JSON 调用生成的 Angular Javascript 对象添加方法

php - 除了一些针以外,用 preg_replace 屏蔽所有字符

c# - 在 C# 的后端代码中访问 data-href

c# - 此方法应返回什么值?

c# - 如何为 DateTime 创建和使用自定义 IFormatProvider?

regex - 当名称不包含某些单词时删除文件

javascript - 如何将获取的数据放入变量中

json - 无法在循环中访问寄存器变量

c# - 用于比较的哈希函数