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

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
阮一峰的网络日志
阮一峰的网络日志
云风的 BLOG
云风的 BLOG
D
Docker
Vercel News
Vercel News
IT之家
IT之家
Recent Announcements
Recent Announcements
Last Week in AI
Last Week in AI
V
Visual Studio Blog
Engineering at Meta
Engineering at Meta
腾讯CDC
Google DeepMind News
Google DeepMind News
I
InfoQ
博客园 - 三生石上(FineUI控件)
Apple Machine Learning Research
Apple Machine Learning Research
The GitHub Blog
The GitHub Blog
博客园 - Franky
The Cloudflare Blog
A
About on SuperTechFans
有赞技术团队
有赞技术团队
Y
Y Combinator Blog
T
Tenable Blog
P
Proofpoint News Feed
Recorded Future
Recorded Future
Security Latest
Security Latest
H
Hackread – Cybersecurity News, Data Breaches, AI and More
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
博客园 - 聂微东
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Google Online Security Blog
Google Online Security Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Simon Willison's Weblog
Simon Willison's Weblog
The Last Watchdog
The Last Watchdog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
N
News and Events Feed by Topic
TaoSecurity Blog
TaoSecurity Blog
U
Unit 42
The Hacker News
The Hacker News
Martin Fowler
Martin Fowler
T
Threat Research - Cisco Blogs
NISL@THU
NISL@THU
F
Full Disclosure
M
MIT News - Artificial intelligence
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
V
V2EX
Project Zero
Project Zero

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