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. Log4j

    [1]从零开始 a). 新建Java Project>>新建package>>新建java类: b). import jar包(一个就够),这里我用的是log4j-1.2.14 ...

  2. UNIX系统基本结构

    UNIX系统的基本结构如图所示.整个UNIX系统可分为五层:最底层是裸机,即硬件部分:第二层是UNIX的核心,它直接建立在裸机的上面,实现了操作系统重要的功能,如进程管理.存储管理.设备管理.文件管理 ...

  3. 匈牙利算法与KM算法

    匈牙利算法 var i,j,k,l,n,m,v,mm,ans:longint; a:..,..]of longint; p,f:..]of longint; function xyl(x,y:long ...

  4. JavaScript中两种类型的全局对象/函数

    这里所说的JavaScript指浏览器环境中的包括宿主环境在内的. 第一种是ECMAScript Global Object,第二种是宿主环境(Host)下的全局对象/函数. 一.核心JavaScri ...

  5. jQuery浏览器类型判断和分辨率判断

    < DOCTYPE html PUBLIC -WCDTD XHTML TransitionalEN httpwwwworgTRxhtmlDTDxhtml-transitionaldtd> ...

  6. 《Java程序设计》 课程教学

    <Java程序设计> 课程教学 给学生 考核方式 100分构成 翻转课堂考核12次(5*12 = 60):每次考试20-30道题目,考试成绩规格化成5分(比如总分20分就除以4) 注意:不 ...

  7. speech recognition resource

    sirius http://sirius.clarity-lab.org/sirius/#install $ tar xzf sirius-1.0.1.tar.gz $ cd sirius/siriu ...

  8. hibernate与ibatis比较

    hibernate 是当前最流行的o/r mapping框架,它出身于sf.net,现在已经成为jboss的一部分了. ibatis 是另外一种优秀的o/r mapping框架,目前属于apache的 ...

  9. PLSQL查询字段为科学计数法,修正显示

    打开PLSQL工具--- toad中->view->option->data->display large number in scientific notationpl/sq ...

  10. MYSQL导入,导出命令。

    Windows下 命令速度远远快于客户端工具导库 导入SQL文件命令,D:\mysqlserver\bin>mysql -uroot -p e6wifi_content <C:/Users ...