【问题标题】:C# check if JSON File contains stringC# 检查 JSON 文件是否包含字符串
【发布时间】:2020-06-22 08:41:41
【问题描述】:

我正在尝试这样做,以便检查字符串是否在 json 中。

例如,在我的 JSON 文件中存在 name = Disp_R,name = Disp_L,name = Disp_C。并且只要 Disp 在字符串中,整个值都应该存储在一个列表中

我就是这样做的,但它不适用于正则表达式

 var jTempObj = JObject.Parse(starcInformation.DeviceArray);
 var tempItems = jTempObj.SelectTokens("$..items[?(@.name=='" + xmlInformation.Device + "')]");
            
 foreach (var item in tempItems)
 {
     DeviceList.Add(item["name"].ToString());
 }

我希望有人可以帮助我:) 非常感谢

编辑

Part1 Part2

【问题讨论】:

  • 请发布 JSON 文件的示例。
  • 添加了两张图片
  • 请不要添加图片链接 - 直接发布问题中的内容
  • 你的结构不清楚,但是可以取对象 var description = jTempObj.youStructFather[i].name;

标签: c# json string


【解决方案1】:

Json 路径支持匹配javascript regexes,所以这样的东西应该可以工作:

var js = "{items:[{'name':'DISP_1'}, {'name':'DISP_2'}, {'name':'sa'}, {'name':'DISP_'}]}";
var result = JObject.Parse(js).SelectTokens("$.items[?(@.name =~ /DISP_.+/)]");

结果将包含所有以DISP_ 为前缀并在其后至少有一个符号的标记。

【讨论】:

  • 也许你可以再帮我一次。如果我想要每个“名称”的内容,正则表达式如何?非常感谢
  • @TheMan 不确定我是否关注你。
  • 我想要每个名称标记的内容。在您的示例中 --> DISP_1、DISP_2、sa、DISP_。使用正则表达式按内容过滤
  • @TheMan 听起来像是另一个问题)
  • @Guro Stron:跟进问题:D stackoverflow.com/questions/63573042/…
【解决方案2】:

您可以使用字符串化 json

JsonConvert.SerializeObject(json)

你可以在其中找到特定的字符串

if(str.Contains("--your-string---"))

【讨论】:

    猜你喜欢
    • 2012-01-14
    • 2020-04-15
    • 2012-02-21
    • 2021-12-20
    • 2020-05-31
    • 2018-10-03
    • 2015-02-07
    • 2011-01-21
    • 2013-11-24
    相关资源
    最近更新 更多