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 = ; i < json.Length; i++)
{
var currentChar = json[i];
char? previousChar = (i > ) ? (char?)json[i - ] : 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 = ;
var inString = false; for (var i = ; i < json.Length; i++)
{
var currentChar = json[i]; if (currentChar == '"' && i > && json[i - ] != '\\')
{
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();
}
}
}

JsonFormatter PrettyPrint的更多相关文章

  1. logrus日志框架

    目录 logrus介绍 logrus配置 日志打印 HOOK机制 Gin日志 Fatal处理 线程安全 logrus介绍 golang标准库的日志框架非常简单,仅仅提供了print,panic和fat ...

  2. prettyprint

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  3. How can I pretty-print JSON in python?

    python -m json.tool my_json.json 转自: http://stackoverflow.com/questions/352098/how-can-i-pretty-prin ...

  4. 使用dom4j工具:设置输出格式compactFormat和PrettyPrint(六)

    package dom4j_write; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStre ...

  5. logrus 剖析之 formatter

    使用 logrus 通过 formatter 来定义输出日志的格式,具体例子如下: package main import ( log "github.com/Sirupsen/logrus ...

  6. Go之Logrus用法入门

    Go之Logrus用法入门 Logrus是Go (golang)的结构化日志程序,完全兼容标准库的API日志程序. Logrus is a structured logger for Go (gola ...

  7. Hello Web API系列教程——Web API与国际化

    软件国际化是在软件设计和文档开发过程中,使得功能和代码设计能处理多种语言和文化习俗,在创建不同语言版本时,不需要重新设计源程序代码的软件工程方法.这在很多成熟的软件开发平台中非常常见.对于.net开发 ...

  8. kindeditor4整合SyntaxHighlighter,让代码亮起来

    这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换 ...

  9. 让kindeditor显示高亮代码

    kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: ...

随机推荐

  1. hbase-site.xml中HBASE_CLASSPATH 的设置

    http://www.dataguru.cn/thread-95064-1-1.html

  2. php配置参数.md

    php 5.5 配置文件 php.ini Options user_ini.filename string 设定了 PHP 会在每个目录下搜寻的文件名:如果设定为空字符串则 PHP 不会搜寻.默认值是 ...

  3. 【转】【C#】C# 5.0 新特性——Async和Await使异步编程更简单

    一.引言 在之前的C#基础知识系列文章中只介绍了从C#1.0到C#4.0中主要的特性,然而.NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两 ...

  4. 以libfuse为例介绍rpm打包工具rpmbuild的使用和SPEC文件的编写

    一.rpmbuild命令的安装 yum install rpm-build 二.用法 rpmbuild -bb XXXX.spec或者rpmbuild -ba XXX.tar.gz 三.目录概述 rp ...

  5. C++学习笔记(1)

    本学习笔记是C++ primer plus(第六版)学习笔记.复习C++基础知识的可以瞄瞄. 转载请注明出处http://www.cnblogs.com/zrtqsk/p/3874148.html,谢 ...

  6. 用table做网页,设置了border为1px怎么还是觉得很粗?

    设置边框重叠 border-collapse:collapse;  /*边框重叠*/ 例: <table width="700" style="border-col ...

  7. AD_TLC549采集模拟信号

    AD_TLC549采集模拟信号 实验原理 芯片介绍 TLC549是 TI公司生产的一种低价位.高性能的8位A/D转换器,它以8位开关电容逐次逼近的方法实现 A/D转换,其转换速度小于 17us,最大转 ...

  8. 给RecyclerView最纯粹的下拉刷新和上拉加载更多

    转自 http://blog.csdn.net/jerrywu145/article/details/52225898 http://www.jianshu.com/p/3bf125b4917d

  9. yii2.0归档安装方法

    我前几天用composer安装 一直没成功  我就用归档的方法安装了  所以这篇文字只帮助那些用归档方法安装的朋友 Yii是一个高性能的,适用于开发WEB2.0应用的PHP框架. Yii自带了丰富的功 ...

  10. BZOJ 3781: 小B的询问

    3781: 小B的询问 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 643  Solved: 435[Submit][Status][Discuss ...