色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java json串壓縮

錢良釵1年前7瀏覽0評論

Java的json串壓縮功能是一個很實用的工具,可以使得json串的傳輸更加高效。下面,我們就來介紹一下Java中json串壓縮的方法。

/**
* 將json串壓縮為一行
* @param jsonString
* @return
*/
public static String compress(String jsonString) {
if (jsonString == null || "".equals(jsonString)) {
return jsonString;
}
StringBuilder sb = new StringBuilder();
char last = '\n';
char current = '\n';
int length = jsonString.length();
for (int i = 0; i< length; i++) {
last = current;
current = jsonString.charAt(i);
if (current == ' ' || current == '\t' || current == '\r') {
continue;
}
if (current == '\"' && last != '\\') {
sb.append(current);
for (i++; i< length; i++) {
char temp = jsonString.charAt(i);
if (temp == '\\' && jsonString.charAt(i + 1) == '\"') {
sb.append("\\\"");
i++;
} else if (temp == '\"') {
sb.append(temp);
break;
} else {
sb.append(temp);
}
}
continue;
}
sb.append(current);
}
return sb.toString().replaceAll(": ", ":").replaceAll(", ", ",");
}

上述代碼中,我們使用了StringBuilder來動態生成壓縮后的json串。我們首先定義了兩個字符變量last和current,分別記錄上一個和當前遍歷到的字符。然后,我們在遍歷json串時,判斷當前字符是否為空格、制表符或回車符,如果是,就直接跳過;如果是引號(即開始或結束一個字符串),則將整個字符串連同引號一起壓縮,并在遍歷過程中對轉義字符進行處理;否則,就直接將當前字符添加到StringBuilder中。

最后,我們通過使用replaceAll方法來去掉生成的json串中的空格和冒號間的空格,進一步達到對json串的壓縮效果。