合并字符串 C# 中的所有 JSON 路径
本文关键字:JSON 路径 字符串 合并 | 更新日期: 2023-09-27 18:33:20
我有一个很大的 JSON 数据,我想从根获取所有路径,直到获取路径的值,然后将结果存储到字符串中,如我在下面描述的那样例如,这是我的 JSON
{
"root":{
"first":{
"first1":{
"value":"1"
},
"first2":{
"value":"2"
},
"first3":{
"value":"3"
}
},
"second":{
"second1":{
"value":"1"
},
"second2":{
"value":"2"
},
"second3":{
"value":"3"
}
},
"third":{
"third1":{
"value":"1"
},
"third2":{
"value":"2"
},
"third3":{
"value":"3"
}
},
"four":{
"value":"4"
},
"five":{
"five1":{
"five11":{
"value":"five11"
},
"five12":{
"value":"five12"
}
},
"five2":{
"five21":{
"five211":{
"value":"five211"
}
}
}
}
}
}
然后我想在 C# 中动态制作每个路径,例如 bellow 并显示在屏幕中,请告诉我一种方法
root.first.first1.value
root.first.first2.value
root.first.first3.value
root.second.second1.value
......
root.four.value
root.five.five1.five11.value
root.five.five1.five12.value
....
root.five2.five21.five211.value
使用 JSON.NET 并以递归方式循环访问 Children 属性,并检查当前令牌是否未将 HasValues 设置为 true,如果是这种情况,请将该令牌的 Path 属性添加到 StringBuilder 或您拥有的内容。应该给你你想要的。
伊迪丝:代码示例
我很懒,只包含整个控制台应用程序代码。
dotnetfiddle.net 示例
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Text;
public class Program
{
public static void Main()
{
var json = @"
{
""root"":{
""first"":{
""first1"":{
""value"":""1""
},
""first2"":{
""value"":""2""
},
""first3"":{
""value"":""3""
}
}
}
}";
var jobject = JObject.Parse (json);
var sb = new StringBuilder ();
RecursiveParse (sb, jobject);
Console.WriteLine (sb.ToString());
}
public static void RecursiveParse(StringBuilder sb, JToken token)
{
foreach (var item in token.Children()) {
if (item.HasValues)
{
RecursiveParse (sb, item);
} else {
sb.AppendLine (item.Path);
}
}
}
}