`

JSON LIB 日期转换

    博客分类:
  • AJAX
阅读更多
public class Person {
	private String name; 
    private Date birthday; 

    public void setName(String name) { 
        this.name = name; 
    } 

    public String getName() { 
        return name; 
    } 

    public void setBirthday(Date birthday) { 
        this.birthday = birthday; 
    } 

    public Date getBirthday() { 
        return birthday; 
    } 

}
 
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import net.sf.ezmorph.object.DateMorpher;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.JSONUtils;

/**
 * @author <a href="mailto:wang-yu@msn.com">WangYu</a></br>
 * @version 1.0 <br>
 * @since JDK 1.6.0.12 <br>
 */

public class JsonUtil {

	/**页面传至后台时,json数据在request的参数名称*/
	public final static String JSON_ATTRIBUTE = "json";
	public final static String JSON_ATTRIBUTE1 = "json1";
	public final static String JSON_ATTRIBUTE2 = "json2";
	public final static String JSON_ATTRIBUTE3 = "json3";
	public final static String JSON_ATTRIBUTE4 = "json4";
	
	/**
	 * 从一个JSON 对象字符格式中得到一个java对象,形如:
	 * {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...}}
	 * @param object
	 * @param clazz
	 * @return
	 */
	public static Object getDTO(String jsonString, Class clazz){
		JSONObject jsonObject = null;
		try{
			setDataFormat2JAVA(); 
			jsonObject = JSONObject.fromObject(jsonString);
		}catch(Exception e){
			e.printStackTrace();
		}
		return JSONObject.toBean(jsonObject, clazz);
	}
	
	/**
	 * 从一个JSON 对象字符格式中得到一个java对象,其中beansList是一类的集合,形如:
	 * {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...},
	 * beansList:[{}, {}, ...]}
	 * @param jsonString
	 * @param clazz
	 * @param map 集合属性的类型 (key : 集合属性名, value : 集合属性类型class) eg: ("beansList" : Bean.class)
	 * @return
	 */
	public static Object getDTO(String jsonString, Class clazz, Map map){
		JSONObject jsonObject = null;
		try{
			setDataFormat2JAVA(); 
			jsonObject = JSONObject.fromObject(jsonString);
		}catch(Exception e){
			e.printStackTrace();
		}
		return JSONObject.toBean(jsonObject, clazz, map);
	}
	
	/**
	 * 从一个JSON数组得到一个java对象数组,形如:
	 * [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]
	 * @param object
	 * @param clazz
	 * @return
	 */
	public static Object[] getDTOArray(String jsonString, Class clazz){
		setDataFormat2JAVA();
		JSONArray array = JSONArray.fromObject(jsonString);
		Object[] obj = new Object[array.size()];
		for(int i = 0; i < array.size(); i++){
			JSONObject jsonObject = array.getJSONObject(i);
			obj[i] = JSONObject.toBean(jsonObject, clazz);
		}
		return obj;
	}
	
	/**
	 * 从一个JSON数组得到一个java对象数组,形如:
	 * [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]
	 * @param object
	 * @param clazz
	 * @param map
	 * @return
	 */
	public static Object[] getDTOArray(String jsonString, Class clazz, Map map){
		setDataFormat2JAVA();
		JSONArray array = JSONArray.fromObject(jsonString);
		Object[] obj = new Object[array.size()];
		for(int i = 0; i < array.size(); i++){
			JSONObject jsonObject = array.getJSONObject(i);
			obj[i] = JSONObject.toBean(jsonObject, clazz, map);
		}
		return obj;
	}
	
	/**
	 * 从一个JSON数组得到一个java对象集合
	 * @param object
	 * @param clazz
	 * @return
	 */
	public static List getDTOList(String jsonString, Class clazz){
		setDataFormat2JAVA();
		JSONArray array = JSONArray.fromObject(jsonString);
		List list = new ArrayList();
		for(Iterator iter = array.iterator(); iter.hasNext();){
			JSONObject jsonObject = (JSONObject)iter.next();
			list.add(JSONObject.toBean(jsonObject, clazz));
		}
		return list;
	}
	
	/**
	 * 从一个JSON数组得到一个java对象集合,其中对象中包含有集合属性
	 * @param object
	 * @param clazz
	 * @param map 集合属性的类型
	 * @return
	 */
	public static List getDTOList(String jsonString, Class clazz, Map map){
		setDataFormat2JAVA();
		JSONArray array = JSONArray.fromObject(jsonString);
		List list = new ArrayList();
		for(Iterator iter = array.iterator(); iter.hasNext();){
			JSONObject jsonObject = (JSONObject)iter.next();
			list.add(JSONObject.toBean(jsonObject, clazz, map));
		}
		return list;
	}
	
	/**
	 * 从json HASH表达式中获取一个map,该map支持嵌套功能
	 * 形如:{"id" : "johncon", "name" : "小强"}
	 * 注意commons-collections版本,必须包含org.apache.commons.collections.map.MultiKeyMap
	 * @param object
	 * @return
	 */
	public static Map getMapFromJson(String jsonString) {
		setDataFormat2JAVA();
        JSONObject jsonObject = JSONObject.fromObject(jsonString);
        Map map = new HashMap();
        for(Iterator iter = jsonObject.keys(); iter.hasNext();){
            String key = (String)iter.next();
            map.put(key, jsonObject.get(key));
        }
        return map;
    }
	
	/**
     * 从json数组中得到相应java数组
     * json形如:["123", "456"]
     * @param jsonString
     * @return
     */
    public static Object[] getObjectArrayFromJson(String jsonString) {
        JSONArray jsonArray = JSONArray.fromObject(jsonString);
        return jsonArray.toArray();
    }


	/**
	 * 把数据对象转换成json字符串
	 * DTO对象形如:{"id" : idValue, "name" : nameValue, ...}
	 * 数组对象形如:[{}, {}, {}, ...]
	 * map对象形如:{key1 : {"id" : idValue, "name" : nameValue, ...}, key2 : {}, ...}
	 * @param object
	 * @return
	 */
	public static String getJSONString(Object object) throws Exception{
		String jsonString = null;
		//日期值处理器
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor());
		if(object != null){
			if(object instanceof Collection || object instanceof Object[]){
				jsonString = JSONArray.fromObject(object, jsonConfig).toString();
			}else{
				jsonString = JSONObject.fromObject(object, jsonConfig).toString();
			}
		}
		return jsonString == null ? "{}" : jsonString;
	}
	
	private static void setDataFormat2JAVA(){
		//设定日期转换格式
		JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] {"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss"}));
	}
} 
public class Test {
	public static void main(String[] args) {
		String personData = "{\"birthday\":\"1980/01/01\",\"name\":\"testname\"}";
		JSONObject jsonPerson = JSONObject.fromObject(personData); 
		String[] dateFormats = new String[] {"yyyy/MM/dd"}; 
		JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats)); 
		Person person = (Person)JSONObject.toBean(jsonPerson, Person.class);
		System.out.println(person.getBirthday());
	}
}
分享到:
评论

相关推荐

    jsonlib需要jar包

    `json-lib`是Java中一个常用的JSON库,它提供了将Java对象转换为JSON格式以及将JSON字符串反序列化为Java对象的功能。 `json-lib-2.4-jdk15`是`json-lib`的一个特定版本,适用于JDK1.5环境。这个库依赖于其他几个...

    JSONlib.rar

    1. **序列化与反序列化**:JSONlib能够将Java对象转换成JSON字符串,同时也可以将JSON字符串解析回对应的Java对象。这对于数据的存储和网络传输特别有用。 2. **支持多种Java类型**:JSONlib支持包括基本类型、数组...

    处理JSON日期转换

    在实际应用中,处理JSON日期转换时,还需要考虑时区问题,因为JSON数据可能来自不同的时区。`json-lib`库允许自定义日期格式和时间戳格式,以确保在解析和序列化时的一致性。此外,现在的许多项目更倾向于使用`...

    Gson和Jsonlib需要的jar包

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web服务和应用程序...在处理简单的JSON转换时,Gson可能是更好的选择,而当涉及到XML转换或需要自定义转换逻辑时,Jsonlib可能会更合适。

    JSON LIB转化时间

    这篇博客“JSON LIB转化时间”可能探讨了如何使用JSON Lib处理日期和时间在JSON中的转换问题。 日期和时间在JSON中通常以字符串形式表示,例如"2023-03-20T10:30:00",这是因为JSON标准本身并不支持日期类型。在...

    关于Json-lib对日期型的转换解决方法

    通常,Json-lib会将日期转换为Unix时间戳或者ISO 8601格式的字符串,但这可能不满足所有需求。有些情况下,我们可能希望自定义日期的格式,例如按照“年-月-日”或“月/日/年”的格式输出。 解决这个问题的关键在于...

    jsonlib和所有依赖库

    7. 配置与定制:JsonLib允许开发者根据需求进行配置,比如设置日期格式、处理循环引用等,以满足不同项目的特定需求。 在实际使用中,为了确保JsonLib正常工作,可能还需要包含一些依赖库,这些库可能包含了JsonLib...

    使用json-lib实现json与Java对象的互转

    `json-lib` 是一个 Java 库,它提供了将 JSON 格式的数据转换为 Java 对象,以及将 Java 对象转换为 JSON 格式数据的功能。在 Java 开发中,`json-lib` 是一个常用的 JSON 处理工具,尤其适用于需要处理复杂 JSON ...

    Java四大json库gson+fastjson+jackson+json-lib

    在Java中,json-lib提供了一些基本的API来实现JSON和Java对象的转换。尽管相比于其他库,json-lib的更新较慢,但在一些老项目中仍被广泛使用,因为它对旧版本的Java兼容性较好。 在选择使用哪个JSON库时,开发者...

    jsonLib支持库

    首先,jsonLib作为一个开源工具,它的主要目标是简化JSON与Java对象之间的转换。在Java中,我们经常需要将JSON字符串转化为Java对象,或者将Java对象转化为JSON字符串,以便在网络间传输数据或存储到数据库中。json...

    json-lib.rar

    与其他JSON库如Jackson相比,`json-lib`的一个显著特点是它支持多种Java对象类型,包括基本类型、集合、Map、日期等,使得数据转换更为便捷。 在使用`json-lib`时,开发者通常会先将Java对象转换成JSON格式的字符串...

    json-lib最新版本 含源码

    4. **类型转换策略**:`json-lib`在处理不同类型的数据时,如日期、枚举等,会采用特定的转换策略。这些策略可以通过`JsonConfig`配置类进行定制。 5. **XML与JSON的相互转换**:`json-lib`还提供了一个独特功能,...

    json-lib-2.4和相应的依赖包

    4. **支持多种Java类型**:json-lib支持包括基本类型、集合、数组、日期、自定义对象等多种Java类型的数据转换。 5. **性能优化**:尽管有其他更现代的JSON库如Gson和Jackson,json-lib-2.4依然因其简洁的API和相对...

    json-lib-2.4.rar

    1. **Java到JSON的转换**:JSON-Lib提供了一种简单的方式将Java对象,如数组、集合、Map、日期等转换为JSON字符串。这使得开发者能够方便地将业务对象以JSON格式发送到客户端。 2. **JSON到Java的转换**:反之,它...

    json-lib所用的jar包

    2. `commons-lang-2.5.jar`:Apache Commons Lang,是一个实用工具类库,补充了Java语言的基本功能,如字符串操作、日期时间处理等,对于`json-lib`在处理JSON字符串时可能需要用到这些功能。 3. `commons-...

    json-lib-2.4-jdk15和全部依赖jar包

    3. **支持多种数据类型**:`json-lib`不仅支持基本的数据类型如String、Number、Boolean,还支持日期、数组、集合和自定义对象的转换,满足了丰富的业务需求。 4. **性能优化**:`json-lib`针对不同的JDK版本进行...

    json转换json-lib

    json-lib允许开发者通过实现`JsonConfig`类的自定义转换规则,以处理特殊类型的Java对象或者处理日期、时间的格式。 4. **XML与JSON互转**: json-lib还提供了XML与JSON之间的转换功能,这对于那些需要在XML和...

    json-lib相关所有包

    1. **JSON序列化和反序列化**:json-lib提供了一系列API,可以将Java对象(如Java Bean、Map、Collection、数组等)轻松地转换成JSON字符串,反之也可以将JSON字符串解析回相应的Java对象。这对于数据交换非常有用,...

Global site tag (gtag.js) - Google Analytics