【问题标题】:C# How to extract certain info long stringC#如何提取某些信息长字符串
【发布时间】:2015-07-06 14:51:55
【问题描述】:

好的,我整天都在尝试使用 Regex 和其他一些方法,但没有成功,这就是我正在尝试做的事情,我会尽量让它变得简单,这是一个 API,我得到 JSON 响应从我的网站是这样的:

{"user_id":1,"username":"xxx","email":"xxx@xxx.com","gender":"male","title":"","language_id":1,"timezone":"Africa\/Nairobi","visible":1,"activity_visible":1,"user_group_id":3,"secondary_group_ids":"2,4,6,8,11,12,13,16,19,20","message_count":235,"conversations_unread":0,"register_date":1424485355,"last_activity":1436186781,"trophy_points":43,"alerts_unread":2,"avatar_date":1435657653,"avatar_width":180,"avatar_height":224,"gravatar":"","user_state":"valid","is_moderator":0,"is_admin":1,"is_banned":0,"like_count":127,"warning_points":0,"is_staff":1,"advapps":"a:1:{i:0;a:2:{s:5:\"posid\";i:1;s:5:\"count\";i:5;}}","brms_statistic_perferences":"a:1:{i:1;s:1:\"0\";}","bratr_ratings":38,"tc_cui_icon":"","tc_cui_color":"#000000","breta_user_level":5,"breta_curent_level":34,"breta_next_level":45,"credits":"13402154377.480000","brc_points":"999999.000000","br_profile_image":"","br_cropy":"0.00",""}}

我要提取的是 user_group_idsecondary_group_ids 然后解析数字并将它们添加到数组中然后将它们与给定的数字进行比较,我想检查成员是否在该组号中(辅助或主没关系)。

我怎样才能用最好和最简单的方法做到这一点?

【问题讨论】:

  • 很抱歉,我在 Stackoverflow 上读到了 50 个问题,但没有运气,让我看看并回复,谢谢。
  • @VincentDecaux 可能,但更好的方法是将对象实际定义为模型并使用反序列化器转换为该对象。这样您就不会依赖可能存在的运行时动态属性。
  • 那是无效的 JSON。 ,""}
  • @OIS 是的,我删除了一些敏感数据,但仅此而已。

标签: c# regex json


【解决方案1】:

首先,将您的 JSON 字符串反序列化为 .NET 字典。例如,JSON.NET:

string json = @"[
   {
     'Name': 'Product 1',
     'ExpiryDate': '2000-12-29T00:00Z',
     'Price': 99.95,
     'Sizes': null
   },
   {
     'Name': 'Product 2',
    'ExpiryDate': '2009-07-31T00:00Z',
    'Price': 12.50,
    'Sizes': null
  }
]";

List<Product> products = JsonConvert.DeserializeObject<List<Product>>(json);

Console.WriteLine(products.Count);
// 2

Product p1 = products[0];

Console.WriteLine(p1.Name);
// Product 1

然后您可以对字典使用基本的 LINQ 查询。

【讨论】:

  • 您应该注意到您在这里使用的是 razor 或 Newtonsoft.Json...github.com/JamesNK/Newtonsoft.Json
  • @MichaelCoxon 添加为链接。谢谢。
  • 谢谢你们,我对此有点小白,所以我需要时间来解决这个问题,让我阅读并尝试一段时间,感谢您的帮助,谢谢!
  • 工作就像一个魅力,非常感谢!
【解决方案2】:

我建议您使用DataContractJsonSerializer 将Json 字符串反序列化为C# 对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    相关资源
    最近更新 更多