`
wuyuhou
  • 浏览: 13940 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

JSON字符串格式化

阅读更多
public class JsonTool {
	
	/**
	 * json字符串的格式化,友好格式
	 * 
	 * @param json json串
	 * @param fillStringUnit 填充字符,比如四个空格
	 * @return
	 */
	public static String formatJson(String json, String fillStringUnit) {
		if (json == null || json.trim().length() == 0) {
			return null;
		}
		
		int fixedLenth = 0;
		ArrayList<String> tokenList = new ArrayList<String>();
		{
			String jsonTemp = json;
			//预读取
			while (jsonTemp.length() > 0) {
				String token = getToken(jsonTemp);
				jsonTemp = jsonTemp.substring(token.length());
				token = token.trim();
				tokenList.add(token);
			}			
		}
		
		for (int i = 0; i < tokenList.size(); i++) {
			String token = tokenList.get(i);
			int length = token.getBytes().length;
			if (length > fixedLenth && i < tokenList.size() - 1 && tokenList.get(i + 1).equals(":")) {
				fixedLenth = length;
			}
		}
		
		StringBuilder buf = new StringBuilder();
		int count = 0;
		for (int i = 0; i < tokenList.size(); i++) {
			
			String token = tokenList.get(i);
			
			if (token.equals(",")) {
				buf.append(token);
				doFill(buf, count, fillStringUnit);
				continue;
			}
			if (token.equals(":")) {
				buf.append(" ").append(token).append(" ");
				continue;
			}
			if (token.equals("{")) {
				String nextToken = tokenList.get(i + 1);
				if (nextToken.equals("}")) {
					i++;
					buf.append("{ }");
				} else {
					count++;
					buf.append(token);
					doFill(buf, count, fillStringUnit);
				}
				continue;
			}
			if (token.equals("}")) {
				count--;
				doFill(buf, count, fillStringUnit);
				buf.append(token);
				continue;
			}
			if (token.equals("[")) {
				String nextToken = tokenList.get(i + 1);
				if (nextToken.equals("]")) {
					i++;
					buf.append("[ ]");
				} else {
					count++;
					buf.append(token);
					doFill(buf, count, fillStringUnit);
				}
				continue;
			}
			if (token.equals("]")) {
				count--;
				doFill(buf, count, fillStringUnit);
				buf.append(token);
				continue;
			}
			
			buf.append(token);
			//左对齐
			if (i < tokenList.size() - 1 && tokenList.get(i + 1).equals(":")) {
				int fillLength = fixedLenth - token.getBytes().length;
				if (fillLength > 0) {
					for(int j = 0; j < fillLength; j++) {
						buf.append(" ");
					}
				}
			}
		}
		return buf.toString();
	}
	
	private static String getToken(String json) {
		StringBuilder buf = new StringBuilder();
		boolean isInYinHao = false;
		while (json.length() > 0) {
			String token = json.substring(0, 1);
			json = json.substring(1);
			
			if (!isInYinHao && 
					(token.equals(":") || token.equals("{") || token.equals("}") 
							|| token.equals("[") || token.equals("]")
							|| token.equals(","))) {
				if (buf.toString().trim().length() == 0) {					
					buf.append(token);
				}
				
				break;
			}

			if (token.equals("\\")) {
				buf.append(token);
				buf.append(json.substring(0, 1));
				json = json.substring(1);
				continue;
			}
			if (token.equals("\"")) {
				buf.append(token);
				if (isInYinHao) {
					break;
				} else {
					isInYinHao = true;
					continue;
				}				
			}
			buf.append(token);
		}
		return buf.toString();
	}

	private static void doFill(StringBuilder buf, int count, String fillStringUnit) {
		buf.append("\n");
		for (int i = 0; i < count; i++) {
			buf.append(fillStringUnit);
		}
	}
}
分享到:
评论

相关推荐

    json字符串格式化工具

    "json字符串格式化工具"是针对JSON数据进行美化和整理的工具,主要功能包括将紧凑的JSON字符串转换为易于阅读的格式,添加缩进、换行,以及高亮显示键值对等。这对于开发者调试API接口、查看JSON响应或者理解复杂...

    Json字符串格式化工具

    标题中的"Json字符串格式化工具"指的是用于美化或格式化JSON数据的软件或在线服务。这类工具可以帮助开发者将原始的、紧凑的JSON字符串转换成可读性更强的格式,通过增加缩进和换行来清晰地展示数据结构,便于理解和...

    json字符串格式化工具JsonView

    json字符串格式化工具,不用安装,直接运行,美化json字符串,方便,快捷。json字符串格式化工具,不用安装,直接运行,美化json字符串,方便,快捷。json字符串格式化工具,不用安装,直接运行,美化json字符串,...

    Json字符串格式化规范化工具源码

    本项目提供的是一款Json字符串格式化规范化工具的源码,其主要功能包括对Json字符串进行美化格式化和压缩去除冗余空白字符。 首先,让我们深入理解Json的基本结构。Json由键值对构成,键必须用双引号括起,值可以是...

    JSON字符串格式化软件版

    "JSON字符串格式化软件版"是指一种专为处理JSON格式数据而设计的桌面应用,它的主要功能是将杂乱无章的JSON字符串整理成清晰、易读的格式,帮助开发者更好地理解和调试数据。这类软件通常具备以下特性: 1. **美化...

    Json字符串格式化JsonView

    "Json字符串格式化JsonView"这个主题主要关注如何通过JsonView工具来美化和解析JSON字符串。 JSON字符串通常是未格式化的,一行内包含所有的键值对,这在查看和理解复杂的数据结构时会带来不便。为了便于阅读和调试...

    Json字符串自动格式化

    自动格式化json字符串自动格式化json字符串自动格式化json字符串

    JSON字符串格式化,JSON工具,JSON工具源代码

    该工具提供各种方法格式化JSON数据,该工具还演示DLL的使用,该工具使用方便,该工具占用小,还有演示的列子对 Newtonsoft.Json.dll和JsonViewer.dll的使用 JSON源代码 JSON字符串格式化 JSON JSON类

    Json 字符串 格式化输出成可阅读格式

    Json 字符串 格式化输出成可阅读格式

    java代码-使用java解决json字符串格式化的源代码

    java代码-使用java解决json字符串格式化的源代码 ——学习参考资料:仅用于个人学习使用!

    JsonView json字符串格式化

    3. **错误检测**:如果输入的JSON字符串格式有误,JSONView通常会识别出错误并提示用户,帮助开发者快速定位问题。 4. **搜索功能**:用户可以通过内置的搜索工具快速查找JSON数据中的特定关键字或值。 5. **快速...

    JSON字符串格式化工具HiJson V2.1.2.rar

    软件介绍: HiJson 2.1.2是一款很好用的json格式化工具,本版本为中文汉化版本,绿色版无需安装直接使用,方便快捷,仅支持32位系统。用于格式化JSON字符串、节点查找、文本查找等。

    Json字符串格式化和压缩,支持数组元素的不换行且能转换成16进制

    Json字符串格式化和压缩,推荐理由 1.离线使用 2.支持json字符串的数据格式化和压缩,如:图1 3.支持数组元素的16进制转换,如:图2 4.支持数组元素不换行,如:图3 ...

    java验证字符串是否符合json格式

    一个有效的JSON字符串必须满足以下条件: 1. 数据是键值对,键和值之间用冒号分隔。 2. 键值对之间用逗号分隔。 3. 对象以大括号`{}`包围,数组以方括号`[]`包围。 4. 键必须是字符串,用双引号包围。 5. 值可以是...

    json字符串格式化高亮工具

    基于jQuery的json格式化、高亮库 使用方式 引入jQuery [removed][removed] 注意:jQuery版本要求&gt;=1.7.2 引入jsonFormater.js和jsonFormater.css [removed][removed] &lt;link href="jsonFormater.css" type=...

    格式化json字符串

    在编程过程中,我们经常需要处理JSON字符串,包括生成、解析、美化和格式化。 "格式化JSON字符串"这个主题主要涉及的是将混乱的、一行显示的JSON数据转换为具有缩进和换行的易于阅读的形式。这对于调试和理解JSON...

    Gson处理Json格式字符串代码

    在这个程序中,你可能会看到如何将一个`Video`对象序列化为JSON字符串,然后再反序列化回来。通过这样的操作,我们可以轻松地在应用程序之间传输和存储数据。 总之,Gson库为Java开发者提供了强大且易用的工具,...

    JSON格式化/字符串格式转换

    1、JSON格式化:软件能够自动识别并格式化JSON数据,使其结构清晰,便于阅读和理解。同时,软件还支持手动调整JSON结构,以满足不同用户的需求。 2、字符串转BASE64:通过将字符串转换为BASE64编码,可以方便地在...

Global site tag (gtag.js) - Google Analytics