格式化json数据

xiaoxiao2021-02-28  130

在请求网络数据时,经常发出或者接收到的数据都是一串字符串,非常影响阅读,接着就是打开网站,然后去网上格式化一下数据,太过麻烦。

1.格式化json数据

/** * 格式化string json数据 * @param jsonStr json数据 * @return */ public static String format(String jsonStr) { int level = 0; StringBuffer jsonForMatStr = new StringBuffer(); for (int i = 0; i < jsonStr.length(); i++) { char c = jsonStr.charAt(i); if (level > 0 && '\n' == jsonForMatStr.charAt(jsonForMatStr.length() - 1)) { jsonForMatStr.append(getLevelStr(level)); } switch (c) { case '{': case '[': jsonForMatStr.append(c + "\n"); level++; break; case ',': jsonForMatStr.append(c + "\n"); break; case '}': case ']': jsonForMatStr.append("\n"); level--; jsonForMatStr.append(getLevelStr(level)); jsonForMatStr.append(c); break; default: jsonForMatStr.append(c); break; } } return convertUnicode(jsonForMatStr.toString()); } /** * 生成tab符号 * @param level * @return */ private static String getLevelStr(int level) { StringBuffer levelStr = new StringBuffer(); for (int levelI = 0; levelI < level; levelI++) { levelStr.append("\t"); } return levelStr.toString(); }  效果

格式化前:

格式化后:

2.unicode解码

/** * 解码unicode * @param ori * @return */ public static String convertUnicode(String ori) { char aChar; int len = ori.length(); StringBuffer outBuffer = new StringBuffer(len); for (int x = 0; x < len; ) { aChar = ori.charAt(x++); if (aChar == '\\') { aChar = ori.charAt(x++); if (aChar == 'u') { // Read the xxxx int value = 0; for (int i = 0; i < 4; i++) { aChar = ori.charAt(x++); switch (aChar) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': value = (value << 4) + aChar - '0'; break; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': value = (value << 4) + 10 + aChar - 'a'; break; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': value = (value << 4) + 10 + aChar - 'A'; break; default: throw new IllegalArgumentException( "Malformed \\uxxxx encoding."); } } outBuffer.append((char) value); } else { if (aChar == 't') aChar = '\t'; else if (aChar == 'r') aChar = '\r'; else if (aChar == 'n') aChar = '\n'; else if (aChar == 'f') aChar = '\f'; outBuffer.append(aChar); } } else outBuffer.append(aChar); } return outBuffer.toString(); }  效果同上图

转载请注明原文地址: https://www.6miu.com/read-17746.html

最新回复(0)