Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从没有已知结构的JSON中检索所有JSON键的值_C#_Json_.net_Json.net - Fatal编程技术网

C# 从没有已知结构的JSON中检索所有JSON键的值

C# 从没有已知结构的JSON中检索所有JSON键的值,c#,json,.net,json.net,C#,Json,.net,Json.net,我从某个端点获取JSON,我只知道它将包含名为“x”的数组,该数组可以包含其他数组、JSON属性等的所有内容 现在,我想从所有键中检索值并将其连接成一个字符串 我发现了这一点,但当它遇到属性数组时,它会按原样提供给我,如下所示: "test": { "test1": "tea", "test2": "tt", "foo": "&qu

我从某个端点获取JSON,我只知道它将包含名为“x”的数组,该数组可以包含其他数组、JSON属性等的所有内容

现在,我想从所有键中检索值并将其连接成一个字符串

我发现了这一点,但当它遇到属性数组时,它会按原样提供给我,如下所示:

"test": {
      "test1": "tea",
      "test2": "tt",
      "foo": "",
      "bar": "48f7c3284ca0",
      "random": "Harry",
      "anything": "Potter"
    },
我想从上面检索值,并将它们连接成字符串,如下所示:

茶tt 48f7c3284ca0哈利波特

换句话说,我想从泛型JSON中foreach每个键,如果它没有子级,则获取它的值并继续foreach

这是测试输出

如果字段是基元类型,则可以使用如下内容:

            dynamic stuff = JsonConvert.DeserializeObject("{'test1':'tea','test2':'tt','foo':'','bar':'48f7c3284ca0','random':'Harry','anything':'Potter'}");

            List<string> resultValues = new List<string>();
            foreach (PropertyDescriptor prop in TypeDescriptor.GetProperties(stuff))
            {
                resultValues.Add(prop.GetValue(stuff).ToString());
            }

我会在原始字符串中使用正则表达式:

(\s*:\s*"?)(\s*[\w\.]*)("?\s*) 深度并不重要,只要输入是有效的JSON


必须过滤匹配列表以排除组1等于的所有匹配:这意味着该值既不是字符串也不是数字。

只需枚举测试节点的属性值。您应该提供一段特定的JSON,涵盖所有类型的预期输入/输出。听起来不错,但在您提供的演示中,并非所有值都匹配。例如,obj.k20.k200有uz值,但不匹配:/这与问题的要求明显不同。让我看看……谢谢你,亚历克斯,虽然我选择了其他答案,但你的回答也很好。 (\s*:\s*"?)(\s*[\w\.]*)("?\s*)
{
  test: {
    "emptystr": "",
    "str": "p",
    "num": 6,
    "obj": {
      "k20": {
        "k200": "uz"
      }
    },
    "arr": [ 2, 3, 4 ],
    "str1": "  asd",
    "num1": 0.33445,
  }
}