1.所依赖JAR包
要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包:
- commons-lang.jar
- commons-beanutils.jar
- commons-collections.jar
- commons-logging.jar
- ezmorph.jar
- json-lib-2.2.2-jdk15.jar
2.Demo
2.1 应用场景:
- 后台的java类,如实体类、List、Set、Map转成json字符串发送到其它项目或者jsp端
- jsp端或者其它项目发送过来的json字符串,需要解析成l实体类、List、Set、Map等java类
2.2 Student实体类
package json;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Student {
private int id;
private String name;
private String age;
private Date birthDay;
private List list;
private Set set;
private Map map;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Date getBirthDay() {
return birthDay;
}
public void setBirthDay(Date birthDay) {
this.birthDay = birthDay;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public Set getSet() {
return set;
}
public void setSet(Set set) {
this.set = set;
}
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age
+ ", birthDay=" + birthDay + ", list=" + list + ", set=" + set
+ ", map=" + map + "]";
}
}2.3 java对象序列化成json对象时,处理日期的处理类
package json; import java.text.SimpleDateFormat; import java.util.Date; import net.sf.json.JsonConfig; import net.sf.json.processors.JsonValueProcessor; /** * * @author yangguojun * java实体类转jsonObject时,日期处理类 */ public class JsonDateValueProcessor implements JsonValueProcessor { /** * 集合中实体类日期处理 */ @Override public Object processArrayValue(Object value , JsonConfig config) { // TODO Auto-generated method stub return processor(value); } /** * 当个实体类日期处理 */ @Override public Object processObjectValue(String propertyName, Object value, JsonConfig config) { return processor(value); } /** * 把日期对象转为字符串 * @param value * @return */ private Object processor(Object value){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if(value instanceof Date){ return format.format(value); } return value == null ? "":value.toString(); } }
2.4 测试类
package json; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import net.sf.json.JSON; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; public class JsonDemo { public static void main(String[] args) { //创建JSON对象的第一种方法 //1.jsonObj:{"id":"1","name":"rose","age":25} JSONObject jsonObj1 = new JSONObject(); jsonObj1.put("id", "1"); jsonObj1.put("name", "rose"); jsonObj1.put("age", 25); System.out.println("jsonObj1"+jsonObj1);
//创建JSON对象的第二种方法 //2.jsonObj2:{"id":"2","name":"zhangsan","age":"25"} HashMap<String, Object> map = new HashMap<String,Object>(); map.put("id", "2"); map.put("name", "zhangsan"); map.put("age", "25"); JSONObject jsonObj2 = JSONObject.fromObject(map); System.out.println("jsonObj2"+jsonObj2); //创建一个JsonArray方法1 //3.jsonArray1:["ZHULI","30","ALI"] JSONArray jsonArray = new JSONArray(); jsonArray.add(0, "ZHULI"); jsonArray.add(1, "30"); jsonArray.add(2, "ALI"); System.out.println("jsonArray1:" + jsonArray); //创建JsonArray方法2 //4.jsonArray2:["柯文修","23","5"] ArrayList<String> arrayList = new ArrayList<String>(); arrayList.add("柯文修"); arrayList.add("23"); arrayList.add("5"); System.out.println("jsonArray2:" + JSONArray.fromObject(arrayList)); //创建一个复杂JSON对象(JSON对象里有JSON数组) //5.jsonObj3{"id":3,"name":"lisi","age":23,"arrayList":["柯文修","23","5"]} JSONObject jsonObj3 = new JSONObject(); jsonObj3.put("id", 3); jsonObj3.put("name", "lisi"); jsonObj3.put("age", 23); jsonObj3.put("arrayList", arrayList); System.out.println("jsonObj3"+jsonObj3); //创建一个复杂JSON数组(JSON数组里含有JSON对象) //6.jsonArray3["4","wangwu","26",{"id":"2","name":"zhangsan","age":"25"}] JSONArray jsonArray3 = new JSONArray(); jsonArray3.add("4"); jsonArray3.add("wangwu"); jsonArray3.add("26"); jsonArray3.add(map); System.out.println("jsonArray3"+jsonArray3);
//把JSON字符串转为JSON对象 //7. 3--lisi--23--["ZHULI","30","ALI"] String jsonString = "{\"id\":3,\"name\":\"lisi\",\"age\":23,\"arrayList\":[\"ZHULI\",\"30\",\"ALI\"]}"; JSONObject jsonObj4 = JSONObject.fromObject(jsonString); System.out.println(jsonObj4.get("id")+"--"+jsonObj4.get("name")+"--"+jsonObj4.get("age")+ "--"+jsonObj4.get("arrayList"));
//java实体类转为JSONObject Student stu = new Student(); stu.setId(1); stu.setName("罗志茂"); stu.setAge("23"); stu.setBirthDay(new Date()); stu.setList(arrayList); HashSet<Object> set = new HashSet<>(); set.add("6"); set.add("戚广辉"); set.add("25"); stu.setSet(set); stu.setMap(map); JsonConfig jsonConfig = new JsonConfig(); jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor()); JSONObject jsonObj5 = JSONObject.fromObject(stu,jsonConfig); System.out.println("序列化:"+jsonObj5); //json转java实体类 Student student = (Student) JSONObject.toBean(jsonObj5, Student.class); System.out.println("反序列化:"+student); } }
2.5 测试结果
jsonObj1{"id":"1","name":"rose","age":25}
jsonObj2{"id":"2","age":"25","name":"zhangsan"}
jsonArray1:["ZHULI","30","ALI"]
jsonArray2:["柯文修","23","5"]
jsonObj3{"id":3,"name":"lisi","age":23,"arrayList":["柯文修","23","5"]}
jsonArray3["4","wangwu","26",{"id":"2","age":"25","name":"zhangsan"}]
3--lisi--23--["ZHULI","30","ALI"]
序列化:{"age":"23","birthDay":"2016-08-13 23:22:27","id":1,"list":["柯文修","23","5"],"map":{"id":"2","age":"25","name":"zhangsan"},"name":"罗志茂","set": ["戚广辉","6","25"]}
反序列化:Student [id=1, name=罗志茂, age=23, birthDay=Sat Aug 13 23:22:27 CST 2016, list=[柯文修, 23, 5], set=[戚广辉, 6, 25], map={id=2, name=zhangsan, age=25}]
转载自:https://www.cnblogs.com/520playboy/p/5766190.html
本文介绍如何使用JSON-lib库实现Java对象与JSON字符串之间的转换,包括依赖包介绍、实体类设计、日期处理方法及测试案例。

154

被折叠的 条评论
为什么被折叠?



