【C#】Json数据 排版算法
我从服务器上取得一串Json数据,然后想表示到画面上。不过服务器上取下的Json数据肯定是经过压缩的,空格和换行都没有。如果直接看,可读性非常差。
由于我这个软件是内部管理用的,使用者既能直接看懂Json数据,但是又要保证数据的可读性,所以得将Json数据做一个排版。
具体如下:
public static string PraseToJson(string str) { var tabIndex = 0; for (int i = 0; i < str.Length; i++) { var cr = str[i]; if (cr == '{' || cr == '[') { var prestr = str.Substring(0, i); var strsuff = str.Substring(i + 1, str.Length - i - 1); str = prestr + cr + "\n" + getSpace(tabIndex + 1) + strsuff; i += (1 + 2 * (tabIndex + 1)); tabIndex++; } else if (cr == '}' || cr == ']') { var prestr = str.Substring(0, i); var strsuff = str.Substring(i + 1, str.Length - i - 1); str = prestr + "\n" + getSpace(tabIndex-1) + cr + strsuff; i += (1 + 2 * (tabIndex-1) ); tabIndex--; } else if(cr == ',') { var prestr = str.Substring(0, i+1); var strsuff = str.Substring(i + 1, str.Length - i - 1); str = prestr + "\n" + getSpace(tabIndex) + strsuff; i += (1 + 2 * tabIndex); } } return str.Trim(); } private static string getSpace(int num) { string result = string.Empty; for (int i = 0; i < num; i++) { result += " "; } return result; }
具体的算法就是,如果是‘{’或者‘[’开头的时候,在‘{’或者‘[’的后面换行,并且空开相应的格数。
如果是‘}’或‘]’开头的时候,在‘}’或‘]’的前面换行,并空开相应的格数。
这个相应的格数怎么计算呢?就是用一个变量控制,上面代码中用的是tabIndex,如果是‘{’或者‘[’,就+1,如果是‘}’或‘]’,就-1.然后换成相应的半角空格。
嗯,说起来还是挺简单的。其实这鬼东西好麻烦,我花了大概两个多小时才写出来,并且只是粗粗测试了一下,有一些情况不一定能cover的住。我算法上一向很差劲。
做出来后效果如下:
分类:
C#
标签:
C# Json 算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?