.net Json 扁平化处理

编程入门 行业动态 更新时间:2024-10-22 11:28:30

.net Json <a href=https://www.elefans.com/category/jswz/34/1767264.html style=扁平化处理"/>

.net Json 扁平化处理

利用JsonDocument 及递归 实现简易的Json扁平化处理


using System.Text.Json;
var str = "{\"Code\":200,\"Data\":{\"url1\":\"1111\",\"url2\":\"2222\",\"url3\":\"3333\",\"url4\":\"4444\"}}";
//扁平化数据结果
var data = new Dictionary<string, string>();
//用来记录json属性名
var pathStack = new Stack<string>();
//数据层级分割字符串
var splitChar = ".";
//转换为JsonDocument对象
using (var doc = JsonDocument.Parse(str))
{JsonFlatten(doc.RootElement);
}//递归实现json节点解析=>扁平化
void JsonFlatten(JsonElement element)
{Action<dynamic> recordAction = (name) => pathStack.Push((pathStack.Count > 0 ? (pathStack.Peek() + splitChar) : string.Empty) + name);foreach (JsonProperty property in element.EnumerateObject()){recordAction(property.Name);switch (property.Value.ValueKind){case JsonValueKind.Object:JsonFlatten(property.Value);break;case JsonValueKind.Array:int index = 0;foreach (JsonElement arrayElement in property.Value.EnumerateArray()){recordAction(index.ToString());JsonFlatten(arrayElement);pathStack.Pop();index++;}break;default:string key = pathStack.Peek();data[key] = property.Value.ToString();break ;}pathStack.Pop();}
}

 

更多推荐

.net Json 扁平化处理

本文发布于:2024-02-06 04:33:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1746023.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:扁平化   net   Json

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!