JSON AST 生成MD
2024-10-18 22:34:51
使用 JsonLite 获取 JSON AST
class Program
{
static void Main(string[] args)
{ string fileName = $"{AppDomain.CurrentDomain.BaseDirectory}\\json.txt"; //SyntaxTree using (var stream = File.OpenRead(fileName))
{ JsonObject temp = Json.CreateAst(stream) as JsonObject; string md = Process(temp);
} Console.WriteLine("Hello World!");
} static string Process(JsonObject jsonObject)
{
StringBuilder builder = new StringBuilder();
builder.AppendLine("#### 返回参数");
builder.AppendLine("| 字段 | 类型 | 字段名 | 说明 |");
builder.AppendLine("| ------------ | ------------ | ------------ | ------------ | ------------ | "); //builder.AppendLine(ProcessFix(jsonObject)); ProcessContent(jsonObject, , builder); return builder.ToString();
} static string ProcessContent(JsonObject jsonObject, int deep, StringBuilder builder)
{
string format = string.Empty; if (deep == )
format = "|{0}|{1}| ||";
else
{
int paddinLeft = + (deep-) * ;
format = "|<span style=\"padding-left: "+paddinLeft.ToString()+"px\">├─ {0}|{1}| | | |";
} foreach (var item in jsonObject.Members)
{
if (item.Value.GetType() == typeof(JsonNumber))
builder.AppendFormat(format, item.Name, "number"); else if (item.Value.GetType() == typeof(JsonObject))
{
builder.AppendFormat(format, item.Name, "Object");
builder.Append(System.Environment.NewLine);
ProcessContent(item.Value as JsonObject, deep + , builder);
}
else if (item.Value.GetType() == typeof(JsonNull))
builder.AppendFormat(format, item.Name, ""); else if (item.Value.GetType() == typeof(JsonBoolean))
builder.AppendFormat(format, item.Name, "bool"); else if (item.Value.GetType() == typeof(JsonString))
builder.AppendFormat(format, item.Name, "string"); else
builder.AppendFormat(format, item.Name, ""); builder.Append(System.Environment.NewLine);
} return string.Empty;
} }
最新文章
- MongooseHelper
- KBMMW 4.93.00 发布
- 解决Windows10下80端口被PID为4的System占用的问题
- docker 1.0.0发布以及一个bug依赖apparmor_parser
- 内核源码分析之linux内核栈(基于3.16-rc4)
- easyui常用控件样式收藏
- Qt 学习之路 :线程简介
- ural 1180 Stone Game
- .net通用权限框架B/S(二) 数据库设计
- Java--Socket通信(双向)
- Golang 入门系列(三)Go语言基础知识汇总
- Java线程安全与锁优化
- [UFLDL] *Train and Optimize
- Spring4相关jar包介绍(转)
- JavaWeb学习篇--Filter过滤器
- vs2017编译网狐荣耀服务端的心得
- iOS - 浅谈LLDB调试器
- Python 中的 sys.argv 用法
- Altera三速以太网IP核使用(下篇)--- 百兆网接口设计与使用
- threading.local()方法;线程池