惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
博客园_首页
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
小众软件
小众软件
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
罗磊的独立博客
V
V2EX
酷 壳 – CoolShell
酷 壳 – CoolShell
IT之家
IT之家
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Recent Announcements
Recent Announcements
M
MIT News - Artificial intelligence
阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub Blog

博客园 - 真幻de现实

EF 基础提供程序在 Open 上失败 flexbox学习 svn post-commit 同步 备份 log4net 2.0.4有问题,AdoNetAppender会报错 http://detectmobilebrowsers.com/ signalr 配置错误跟踪 Facebook的Web开发三板斧:React.js、Relay和GraphQL 客户有两台windows服务器要做sql server双机切换 http://www.sqlservercentral.com/articles/Failover+Clustered+Instance+(FCI)/92196/ zozoui log4net 运行时改变日志级别 How do I enable log4net internal debugging? Site Not Found 如果asp.net mvc中某个action被执行了两次,请检查是不是以下的原因 IIs管理服务一直启动失败的原因之一 https://github.com/trending?l=csharp https://zeroc.com/index.html 有了这个工具,终于可以松一口气了
JsonFormatter PrettyPrint
真幻de现实 · 2015-07-15 · via 博客园 - 真幻de现实
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();
        }
    }
}

posted @ 2015-07-15 08:10  真幻de现实  阅读(927)  评论()    收藏  举报