一、自定義過濾器說明
PropertyPreFilter 根據PropertyName判斷是否序列化
PropertyFilter 根據PropertyName和PropertyValue來判斷是否序列化
NameFilter 修改Key,如果需要修改Key,process返回值則可
ValueFilter 修改Value
BeforeFilter 序列化時在最前添加內容
AfterFilter 序列化時在最后添加內容
二、NameFilter使用demo
JSONObject.toJSONString(data, new NameFilter() { private String underscoreName(String name) { if (StringUtils.isEmpty(name)) { return ""; } StringBuilder result = new StringBuilder(); result.append(name.substring(0, 1).toLowerCase()); for (int i = 1; i < name.length(); ++i) { String s = name.substring(i, i + 1); String slc = s.toLowerCase(); if (!(s.equals(slc))) { result.append("_").append(slc); } else { result.append(s); } } return result.toString(); } @Override public String process(Object object, String name, Object value) { return underscoreName(name); } })
轉換效果:將 property 中的 name = "submitOrder" 轉換為 name = "sbumit_order"