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

推荐订阅源

美团技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Martin Fowler
Martin Fowler
雷峰网
雷峰网
IT之家
IT之家
小众软件
小众软件
M
MIT News - Artificial intelligence
博客园 - 聂微东
J
Java Code Geeks
Blog — PlanetScale
Blog — PlanetScale
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
About on SuperTechFans
G
Google Developers Blog
Engineering at Meta
Engineering at Meta
Recent Announcements
Recent Announcements
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
C
Check Point Blog
云风的 BLOG
云风的 BLOG
腾讯CDC
H
Help Net Security
Y
Y Combinator Blog
I
InfoQ

博客园 - 真幻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)  评论()    收藏  举报