- 什么是JSON
JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) - JSON的两种结构
- “名称/值”对的集合。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
- 值的有序列表。在大部分语言中,它被理解为数组(array)。
-
JSON数据格式
{ "属性1":值1, "属性2":值2 //如果值为字符串,则也需要用""括起来 }
{ "属性1":值1, "属性2":[ 值1, 值2 ] //其中属性2是一个数组,包含了值1和值2 }
{ "属性1":值1, "属性2":{ "属性a":值a, "属性b":[ 值b, 值c ] } //属性2是个对象,这个对象由包含属性a和属性b,属性b又是一个数组包含值b和值c }
-
JSON字符串格式化输出函数工具
public static String formatJson(String jsonStr) { if (jsonStr == null || "".equals(jsonStr)) return ""; StringBuilder sb = new StringBuilder(); //标记已添加到sb中的最后一个字符 char last = '\0'; //标记当前字符 char current = '\0'; int indent = 0; for (int i = 0; i < jsonStr.length(); i++) { last = current; current = jsonStr.charAt(i); switch (current) { case '{': case '[': sb.append(current); sb.append('\n'); // 如果是{ [ 下一行需要缩进 indent++; addIndentBlank(sb, indent); break; case '}': case ']': sb.append('\n'); indent--; addIndentBlank(sb, indent); sb.append(current); break; case ',': sb.append(current); if (last != '\\') { sb.append('\n'); addIndentBlank(sb, indent); } break; default: sb.append(current); } } return sb.toString(); } //添加空格 private static void addIndentBlank(StringBuilder sb, int indent) { // “\t”为“转义字符”,代表的是一个tab,也就是8个空格,八个空格太多了,这里改为4个空格 for (int i = 0; i < indent; i++) { // sb.append('\t'); sb.append(" "); } }