1、jar包
commons-beanutils-xxx.jar
commons-collections-xxx.jar
commons-lang-xxx.jar
commons-logging-xxx.jar
ezmorph-xxx.jar
json-lib-xxx.jar
2、java代码及测试类
package com.zhaolp.json;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @author zhaolunpeng
* @date 2016-1-6 上午10:28:02
* 功能:json测试基类
*/
public class JsonBaseBean implements Serializable {
private static final long serialVersionUID = 2425694623661801705L;
private Date monitorDate;//时间
private String cityCode;//城市代码
private double data;
private List<String> cityCodeList;
public Date getMonitorDate() {
return monitorDate;
}
public void setMonitorDate(Date monitorDate) {
this.monitorDate = monitorDate;
}
public String getCityCode() {
return cityCode;
}
public void setCityCode(String cityCode) {
this.cityCode = cityCode;
}
public double getData() {
return data;
}
public void setData(double data) {
this.data = data;
}
public List<String> getCityCodeList() {
return cityCodeList;
}
public void setCityCodeList(List<String> cityCodeList) {
this.cityCodeList = cityCodeList;
}
}
package com.zhaolp.json;
import java.util.Date;
import net.sf.ezmorph.object.DateMorpher;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.JSONUtils;
import net.sf.json.util.PropertyFilter;
import org.apache.commons.lang3.StringUtils;
/**
* @author zhaolunpeng
* @date 2016-1-6 上午10:39:27
* 功能:json与javaBean互转
*/
public class Json2JavaBean {
private String dateFormat = "yyyy-MM-dd";
/**
* @author zhaolunpeng
* @date 2016-1-6 上午10:42:39
* @param json
* @return java 对象
* 功能:json转java对象
*/
public JsonBaseBean jsonToJava(String json){
JsonBaseBean jsonBaseBean = null;
try {
if(StringUtils.isNotBlank(json)){
//处理json时间属性格式
JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[]{dateFormat}));
JSONObject jsonObj = JSONObject.fromObject(json);
jsonBaseBean = (JsonBaseBean)JSONObject.toBean(jsonObj, JsonBaseBean.class);
}
} catch (Exception e) {
e.printStackTrace();
}
return jsonBaseBean;
}
/**
* @author zhaolunpeng
* @date 2016-1-6 上午11:04:26
* @param jsonBaseBean
* @return json字符串
* 功能:java对象转json
*/
public String javaToJson(JsonBaseBean jsonBaseBean){
String json = null;
try {
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor(dateFormat));
JSONObject array = JSONObject.fromObject(jsonBaseBean, jsonConfig);
json = array.toString();
} catch (Exception e) {
e.printStackTrace();
}
return json;
}
/**
* @author zhaolunpeng
* @date 2016-1-6 下午1:35:06
* @param jsonBaseBean
* @return json字符串
* 功能:java对象转json过滤属性
*/
public String jsonFilter(JsonBaseBean jsonBaseBean){
String json = null;
try {
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor(dateFormat));
//过滤属性
jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
public boolean apply(Object source, String name, Object value) {
if ("cityCodeList".equals(name)) {
return true;
}
return false;
}
});
JSONObject array = JSONObject.fromObject(jsonBaseBean, jsonConfig);
json = array.toString();
} catch (Exception e) {
e.printStackTrace();
}
return json;
}
}
package com.zhaolp.json;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author zhaolunpeng
* @date 2016-1-6 上午11:12:19
* 功能:测试类
*/
public class JsonTest {
public static void main(String[] args) {
//创建一个JsonBaseBean
JsonBaseBean jsonBaseBean = new JsonBaseBean();
jsonBaseBean.setCityCode("120001");
jsonBaseBean.setData(1.22);
jsonBaseBean.setMonitorDate(new Date());
List<String> list = new ArrayList<String>();
list.add("130001");
list.add("140001");
jsonBaseBean.setCityCodeList(list);
//调用转换方法 对象转json
Json2JavaBean json2JavaBean = new Json2JavaBean();
String json = json2JavaBean.javaToJson(jsonBaseBean);
System.out.println("json:"+json);
//json转java对象
JsonBaseBean aaa = json2JavaBean.jsonToJava(json);
System.out.println(aaa.getMonitorDate());
//过滤属性
String jsonFilter = json2JavaBean.jsonFilter(jsonBaseBean);
System.out.println(jsonFilter);
}
}
java转json日期处理类
package com.zhaolp.json;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
/**
* JSON 日期格式处理(java转化为JSON)
* @author zhaolunpeng
*/
public class JsonDateValueProcessor implements JsonValueProcessor {
/**
* datePattern
*/
private String datePattern;
/**
* @param format
*/
public JsonDateValueProcessor(String format) {
super();
this.datePattern = format;
}
/**
* @param value
* @param jsonConfig
* @return Object
*/
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
return process(value);
}
/**
* @param key
* @param value
* @param jsonConfig
* @return Object
*/
public Object processObjectValue(String key, Object value,
JsonConfig jsonConfig) {
return process(value);
}
/**
* process
* @param value
* @return
*/
private Object process(Object value) {
try {
if (value instanceof Date) {
SimpleDateFormat sdf = new SimpleDateFormat(datePattern,
Locale.UK);
return sdf.format((Date) value);
}
return value == null ? "" : value.toString();
} catch (Exception e) {
return "";
}
}
}