json与实体类、实体类List互转要用到的jar包:
http://download.csdn.net/download/superit401/9955861
或
http://files.cnblogs.com/files/wenjie123/json_jar%E5%8C%85.rar
1.测试类:
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import test.SwitchUtils.entity.User;
public class entity2json {
public static void main(String[] args) {
/*
* 1.测试单个实体转为json字符串
*/
User u = new User("alex","wuhan",18,"male");
entity2json e2j = new entity2json();
String jstr = e2j.beanToJSONStr(u);
System.out.println("实体类转json字符串:"+jstr);
/*
* 2.测试实体类List转为json字符串
*/
List<User> ul = new ArrayList<User>();
ul.add(new User("tom","shanghai",23,"male"));
ul.add(new User("cherry","beijing",20,"famale"));
ul.add(new User("bole","suzhou",19,"famale"));
String jstrl = e2j.beanListToJSONStr(ul);
System.out.println("实体类List转为json字符串:"+jstrl);
/*
* 3.测试json字符串转为实体类
*/
String j="{\"sex\":\"male\",\"address\":\"shanghai\",\"age\":23,\"name\":\"tom\"}";
JSONObject obj1 = JSONObject.fromObject(j);
User uu = (User) JSONObject.toBean(obj1,User.class);
System.out.println("json字符串转为实体类:"+uu);
/*
* 4.测试json字符串转为实体类List
*/
String json = "{\"listObject\":[{\"sex\":\"male\",\"address\":\"shanghai\",\"age\":23,\"name\":\"tom\"},{\"sex\":\"famale\",\"address\":\"beijing\",\"age\":20,\"name\":\"cherry\"},{\"sex\":\"famale\",\"address\":\"suzhou\",\"age\":19,\"name\":\"bole\"}]}";
JSONObject obj = JSONObject.fromObject(json);
List<User> ulist = (List<User>) JSONArray.toList(obj.getJSONArray("listObject"), User.class);
System.out.println("json字符串转为实体类List:"+ulist);
}
/**
* 将对象转换成JSON格式的字符串 适用于单个对象(单个对象里可以包含List<T>)的转换
*/
public <T> String beanToJSONStr(T t) {
String json = "";
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class,
new JsonDateValueProcessor());
if(t!=null){
json = JSONObject.fromObject(t, jsonConfig).toString();
}else{
json="[]";
}
return json;
}
/**
* 将实体类List转换成JSON格式的字符串
*/
public <T> String beanListToJSONStr(List<T> t) {
String json = "";
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class,
new JsonDateValueProcessor());
if(t!=null){
json = JSONArray.fromObject(t, jsonConfig).toString();
}else{
json="[]";
}
return json;
}
}
2.User.java
public class User{
private String name;
private String address;
private int age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User [name=" + name + ", address=" + address + ", age=" + age + ", sex=" + sex + "]";
}
public User(String name, String address, int age, String sex) {
super();
this.name = name;
this.address = address;
this.age = age;
this.sex = sex;
}
public User(){
}
}
3.工具类:JsonDateValueProcessor.java(注意:此类可要可不要,没有涉及到时间转换问题就可以删除,包括删除上面测试类中相关两处代码)
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
/**
* Timestamp 处理器
*/
public class JsonDateValueProcessor implements JsonValueProcessor {
private String formatDateTime ="yyyy-MM-dd HH:mm:ss";
private String formatDate ="yyyy-MM-dd";
public Object processArrayValue(Object value, JsonConfig config) {
return process(value);
}
public Object processObjectValue(String key, Object value, JsonConfig config) {
return process(value);
}
private Object process(Object value){
if(value instanceof Date){
SimpleDateFormat sdf ;
if(value.toString().length()<=11||value.toString().indexOf("00:00:00.0")>=0){
sdf= new SimpleDateFormat(formatDate,Locale.UK);
}else{
sdf= new SimpleDateFormat(formatDateTime,Locale.UK);
}
return sdf.format(value);
}
return value == null ? "" : value.toString();
}
}
更多请参考:
http://www.cnblogs.com/wenjie123/archive/2015/07/13/4643305.html