Json-lib - java.util.Date 转换问题

使用 JSON-lib 将 java.util.Date 对象直接转换成 JSON 字符串时,得到的通常不是想要格式:

System.out.println(JSONSerializer.toJSON(new Date()));

// {"date":24,"day":3,"hours":12,"minutes":39,"month":5,"seconds":46,"time":1435120786584,"timezoneOffset":-480,"year":115}

 

JavaBean 转 JSON

JsonValueProcessor jsonValueProcessor = new JsonValueProcessor() {

private final String DATE_FORMAT = "yyyy-MM-dd";

    @Override

    public Object processObjectValue(String key, Object value, JsonConfig config) {

        if (value == null) {

            return "";

        }

        if (value instanceof Date) {

            return new SimpleDateFormat(DATE_FORMAT).format((Date) value);

        }

        return value.toString();

    }

    @Override

    public Object processArrayValue(Object value, JsonConfig config) {

        return null;

    }

};



JsonConfig jsonConfig = new JsonConfig();

jsonConfig.registerJsonValueProcessor(Date.class, jsonValueProcessor);

Student stud = new Student("1001", "huey", 'M', new Date());

String jsonStr = JSONSerializer.toJSON(stud, jsonConfig).toString();

System.out.println(jsonStr);    // {"birthday":"2015-06-24","gender":"M","studName":"huey","studNo":"1001"}

JSON 转 JavaBean

String jsonStr = "{'studNo':'1001','studName':'huey','gender':'M','birthday':'2014-04-13'}";

JSONObject jsonObj = JSONObject.fromObject(jsonStr);

JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[]{"yyyy-MM-dd"}));

Student stud = (Student) JSONObject.toBean(jsonObj, Student.class);

System.out.println(stud);    // Student(studNo=1001, studName=huey, gender=M, birthday=Sun Apr 13 00:00:00 CST 2014)

JavaBean 定义

@Data

@NoArgsConstructor

@AllArgsConstructor

public class Student {

    private String studNo;

    private String studName;

    private char gender;

    private Date birthday;    

}

 

你可能感兴趣的:(json-lib)