/**
*
*/
package jframe.pay.domain.util;
import java.util.Map;
import jframe.pay.domain.Fields;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.PropertyFilter;
import com.alibaba.fastjson.serializer.SerializeFilter;
/**
* @author dzh
* @date Jul 12, 2014 8:51:03 AM
* @since 1.0
*/
public class JsonUtil {
public static String encode(Map<String, Object> req) {
return JSON.toJSONString(req);
}
public static String encode(Map<String, Object> map, SerializeFilter filter) {
return JSON.toJSONString(map, filter);
}
public static Map<String, Object> decode(String res) {
return JSON.<Map<String, Object>> parseObject(res, Map.class);
}
public static String toJson(Object obj) {
if (obj == null)
return "";
return JSON.toJSONString(obj, new ExcludeNilPropertyFilter());
}
public static String toJson(Object obj, SerializeFilter filter) {
if (obj == null)
return "";
return JSON.toJSONString(obj, filter);
}
public static <T> T fromJson(String json, Class<T> clazz) {
if (json == null || "".equals(json))
return null;
return JSON.parseObject(json, clazz);
}
/**
* 过滤除此外的参数
*
* @param params
* @return
*/
public static PropertyFilter createPropertyFilter(final String[] params) {
return new PropertyFilter() {
@Override
public boolean apply(Object object, String name, Object value) {
if (value == null)
return false;
if (params != null && params.length > 0) {
for (int i = 0; i < params.length; i++) {
if (name.equals(params[i])) {
return true;
}
}
}
if (name.equals(Fields.F_rspCode)
|| name.equals(Fields.F_rspDesc)) {
return true;
}
return false;
}
};
}
public static PropertyFilter createExcludePropertyFilter(
final String[] params) {
return new PropertyFilter() {
@Override
public boolean apply(Object object, String name, Object value) {
if (value == null)
return false;
if (params != null && params.length > 0) {
for (int i = 0; i < params.length; i++) {
if (name.equals(params[i])) {
return false;
}
}
}
if (name.equals(Fields.F_rspCode)
|| name.equals(Fields.F_rspDesc)) {
return true;
}
return true;
}
};
}
public static class ExcludeNilPropertyFilter implements PropertyFilter {
@Override
public boolean apply(Object object, String name, Object value) {
if (value == null || "".equals(value))
return false;
return true;
}
}
}