JsonFormatter PrettyPrint
2015-07-15 08:10
671 查看
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace prettycode.org { public static class JsonFormatter { public static string JsCasePropertyNames(string json) { var buffer = new StringBuilder(); var inString = false; for (var i = 0; i < json.Length; i++) { var currentChar = json[i]; char? previousChar = (i > 0) ? (char?)json[i - 1] : null; if (currentChar == '"' && previousChar.HasValue && previousChar != '\\') { inString = !inString; } if (inString && currentChar == '"' && "{,".Contains(previousChar.Value)) { buffer.Append("\"" + Char.ToLowerInvariant(json[++i])); } else { buffer.Append(currentChar); } } return buffer.ToString(); } public static string PrettyPrint(string json, string indent = " ") { var buffer = new StringBuilder(); var depth = 0; var inString = false; for (var i = 0; i < json.Length; i++) { var currentChar = json[i]; if (currentChar == '"' && i > 0 && json[i - 1] != '\\') { inString = !inString; } if (inString) { buffer.Append(currentChar); } else if (currentChar == '{' || currentChar == '[') { buffer.Append(currentChar + "\n" + string.Concat(Enumerable.Repeat(indent, ++depth))); } else if (currentChar == '}' || currentChar == ']') { buffer.Append("\n" + string.Concat(Enumerable.Repeat(indent, --depth)) + currentChar); } else if (currentChar == ',') { buffer.Append(",\n" + string.Concat(Enumerable.Repeat(indent, depth))); } else if (currentChar == ':') { buffer.Append(": "); } else { buffer.Append(currentChar); } } return buffer.ToString(); } } }
相关文章推荐
- 构建自己的JavaScript模板小引擎
- JSP上传文件至服务器【1】
- JS-010-覆盖率测试工具 JSCoverage 初识
- JS-009-屏幕分辨率、浏览器显示区域、元素位置获取
- JS-008-日期控件操作
- JS-007-富文本域操作
- js中的undefined探寻
- JS-006-表格元素操作
- JS-005-常见下拉列表 Select 和 datalist
- JS基础总结
- JavaScript字符串多行换行
- JS-004-判断元素显示状态
- javascript实现在线客服效果
- 浅谈javascript中return语句
- Javascript显示和隐藏ul列表的方法
- JavaScript截断字符串的方法
- JavaScript实现对下拉列表值进行排序的方法
- JavaScript基于ajax编辑信息用法实例
- Javascript简单改变表单元素背景的方法
- javascript将base64编码的图片数据转换为file并提交