JSON压缩:JSONMinify
2016-04-21 17:10
489 查看
JSON压缩:JSONMinify
JSONMinify 2014-04-01 17:23:16 发布您的评价: | 3.5 |
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(); } }
相关文章推荐
- js为数字添加千位分隔符
- js 四舍五入保留二位小数
- js模拟用户多次点击下载文件
- JavaScript 表单验证正则表达式大全
- Ember.js实现单页面应用程序
- 借助fastjson 实体对象转map
- Json字符串转成XML
- RabbitMQ学习之messageconver插件实现(Gson)
- JS 中如何判断字符串类型的数字
- JS拦截方法
- js
- 【javascript】base.js
- JS学习4(引用类型)
- 【javascript】如何延迟加载JavaScript(Google推荐的代码)
- js中的循环变量声明
- JavaScript之闭包详解
- javascript-点击栏目条增加操作框
- js this对象
- javascript基础五 (cookie基础)
- js keyup、keypress和keydown事件 详解