c# - 从没有已知结构的 JSON 中检索所有 JSON 键的值
问题描述
我从某个端点获取 JSON,我只知道它将包含名为“x”的数组,它可以包含所有内容(另一个数组、JSON 属性等)。
现在,我想从所有键中检索值并将其连接成一个字符串。
我找到了这个解决方案,但是当它遇到属性数组时,它给了我原样,如下所示:
"test": {
"test1": "tea",
"test2": "tt",
"foo": "",
"bar": "48f7c3284ca0",
"random": "Harry",
"anything": "Potter"
},
我想从上面仅检索值并将它们连接成字符串,如下所示:
“茶 tt 48f7c3284ca0 哈利波特”。
换句话说 - 我想从通用JSON 中foreach每个键,如果它没有孩子,获取它的值并继续foreaching。
解决方案
private static IEnumerable<string> Flat(JToken token)
{
switch (token.Type)
{
// nested value types
case JTokenType.Object:
case JTokenType.Array:
case JTokenType.Property:
foreach (var item in token.Children().Select(Flat).SelectMany(x => x))
yield return item;
break;
default: // primitive values: int, string, float
yield return token.ToString();
break;
}
}
static async Task Main(string[] args)
{
JToken token = Newtonsoft.Json.JsonConvert.DeserializeObject<JToken>(File.ReadAllText("test.json"));
foreach (var item in Flat(token))
{
Console.WriteLine(item);
}
}
这是测试输出 https://ctrlv.cz/TvqP
推荐阅读
- gitlab - GitLab API:按名称从管道中过滤作业
- java - Eclipse,Hibernate 5.0.7 锁定在调试模式
- r - 使用 nlme、ggeffects 和 sjplot 绘制 lme 模型对重复测量数据的总体水平预测
- python - UFT-8 Python LXML HTML
- linux - What is the best way to build own system metric collector agent
- docker - Docker volume permission: Permission denied when using volume
- php - Scrape from OG tags DOMCrawler - PHP
- javascript - javascript replace all specific string convert img tag
- r - Delete whole case if value is bigger than 0 and 1
- firebase - Firebase 身份验证:如何预先创建身份验证用户以使用 microsoft 提供程序登录?