概述
JSON压缩:JSONMinify
您的评价: |
| 3.5 |
0收藏
JSONMinify 移除了 JSON 或者 JSON+C(JSON+C = JSON with comments) 文档中的所有空白和注释,实现对 JSON 内容的最小化压缩。实现无开销和近乎完美的表现。这个包只有53行源码:
public class JSONMinify {
public static String minify(String jsonString) {
boolean in_string = false;
boolean in_multiline_comment = false;
boolean in_singleline_comment = false;
char string_opener = 'x'; // unused value, just something that makes compiler happy
StringBuilder out = new StringBuilder();
for (int i = 0; i < jsonString.length(); i++) {
// get next (c) and next-next character (cc)
char c = jsonString.charAt(i);
String cc = jsonString.substring(i, Math.min(i+2, jsonString.length()));
// big switch is by what mode we're in (in_string etc.)
if (in_string) {
if (c == string_opener) {
in_string = false;
out.append(c);
} else if (c == '\') { // no special treatment needed for \u, it just works like this too
out.append(cc);
++i;
} else
out.append(c);
} else if (in_singleline_comment) {
if (c == 'r' || c == 'n')
in_singleline_comment = false;
} else if (in_multiline_comment) {
if (cc.equals("*/")) {
in_multiline_comment = false;
++i;
}
} else {
// we're outside of the special modes, so look for mode openers (comment start, string start)
if (cc.equals("/*")) {
in_multiline_comment = true;
++i;
} else if (cc.equals("//")) {
in_singleline_comment = true;
++i;
} else if (c == '"' || c == ''') {
in_string = true;
string_opener = c;
out.append(c);
} else if (!Character.isWhitespace(c))
out.append(c);
}
}
return out.toString();
}
}
最后
以上就是激动雨为你收集整理的JSON压缩:JSONMinifyJSON压缩:JSONMinify 的全部内容,希望文章能够帮你解决JSON压缩:JSONMinifyJSON压缩:JSONMinify 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复