添加maven依赖:
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
json-lib包中JSONObject和JSONArray类都有一个fromObject(Object object)的静态方法,即可以从参数object中构造json对象或数组。
(1)JSONObject.fromObject(Object object)中,参数可以是String、Map、beans等,不可以是collection、java arrays等。
(2)JSONArray.fromObject(Object object)中,参数可以是String、Map、Colliection、collection、java arrays等。
代码例子:
public class Student {
private Long id;
private String name;
private String sex;
private int age;
private Date birthday;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
", age=" + age +
", birthday=" + birthday +
'}';
}
}
/**
* Date类型字段格式化
*/
public class DateJsonFormatter implements JsonValueProcessor {
public static final String Default_DATE_PATTERN = "yyyy-MM-dd";
private DateFormat dateFormat;
public DateJsonFormatter(String pattern) {
try {
dateFormat = new SimpleDateFormat(pattern);
} catch (Exception e) {
dateFormat = new SimpleDateFormat(Default_DATE_PATTERN);
}
}
@Override
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
return dateFormat.format(value);
}
@Override
public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
return dateFormat.format(value);
}
}
public class JsonLibTest {
private static JsonConfig jsonConfig;
static {
jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class, new DateJsonFormatter("yyyy-MM-dd HH:mm:ss"));
}
public static void main(String[] args) {
Student stu = new Student();
stu.setId(1001L);
stu.setName("qinxi");
stu.setSex("man");
stu.setBirthday(new Date());
stu.setAge(25);
System.out.println(beanToJson(stu));
Map<String, Object> map = new HashMap<>();
map.put("student", stu);
map.put("time", new Date());
map.put("company", "aspire");
map.put("number", 666);
System.out.println(mapToJson(map));
Student stu2 = new Student();
stu2.setId(1002L);
stu2.setName("jiamin");
stu2.setSex("woman");
stu2.setBirthday(new Date());
stu2.setAge(24);
List<Object> list = new ArrayList<>();
list.add(stu);
list.add(stu2);
System.out.println(listToJson(list));
System.out.println("======================================");
System.out.println(jsonToBean(beanToJson(stu), Student.class));
System.out.println(jsonToList(listToJson(list), Student.class));
Map resultMap = jsonToMap(mapToJson(map));
for (Map.Entry entry : map.entrySet()) {
System.out.println(entry.getKey() + " : " +entry.getValue());
}
}
//bean转换为json字符串
public static String beanToJson(Object bean) {
JSONObject jsonObject = JSONObject.fromObject(bean, jsonConfig);
String jsonStr = jsonObject.toString();
return jsonStr;
}
//map转换为json字符串
public static String mapToJson(Map<String, Object> map) {
JSONObject jsonObject = JSONObject.fromObject(map, jsonConfig);
String jsonStr = jsonObject.toString();
return jsonStr;
}
//list转换为json字符串
public static String listToJson(List<Object> list) {
JSONArray jsonArray = JSONArray.fromObject(list, jsonConfig);
String jsonStr = jsonArray.toString();
return jsonStr;
}
//json字符串转换为bean
public static Object jsonToBean(String jsonStr, Class<?> clazz) {
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
Object bean = null;
try {
bean = JSONObject.toBean(jsonObject, clazz.newInstance(), jsonConfig);
} catch (Exception e) {
e.printStackTrace();
}
return bean;
}
//json字符串转换为list
public static List jsonToList(String jsonStr, Class<?> clazz) {
JSONArray jsonArray = JSONArray.fromObject(jsonStr);
List list = null;
try {
list = JSONArray.toList(jsonArray, clazz.newInstance(), jsonConfig);
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
//json字符串转换为map
public static Map jsonToMap(String jsonStr) {
Map map = JSONObject.fromObject(jsonStr, jsonConfig);
return map;
}
}