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());
}
}
分享到:
相关推荐
`json-lib`是Java中一个常用的JSON库,它提供了将Java对象转换为JSON格式以及将JSON字符串反序列化为Java对象的功能。 `json-lib-2.4-jdk15`是`json-lib`的一个特定版本,适用于JDK1.5环境。这个库依赖于其他几个...
1. **序列化与反序列化**:JSONlib能够将Java对象转换成JSON字符串,同时也可以将JSON字符串解析回对应的Java对象。这对于数据的存储和网络传输特别有用。 2. **支持多种Java类型**:JSONlib支持包括基本类型、数组...
在实际应用中,处理JSON日期转换时,还需要考虑时区问题,因为JSON数据可能来自不同的时区。`json-lib`库允许自定义日期格式和时间戳格式,以确保在解析和序列化时的一致性。此外,现在的许多项目更倾向于使用`...
JSON-lib是一个Java库,用于处理JSON(JavaScript Object Notation)和XML之间的转换。这个框架使得在Java应用程序中处理这两种数据格式变得简单。JSON是一种轻量级的数据交换格式,被广泛用于Web服务和前后端交互,...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web服务和应用程序...在处理简单的JSON转换时,Gson可能是更好的选择,而当涉及到XML转换或需要自定义转换逻辑时,Jsonlib可能会更合适。
这篇博客“JSON LIB转化时间”可能探讨了如何使用JSON Lib处理日期和时间在JSON中的转换问题。 日期和时间在JSON中通常以字符串形式表示,例如"2023-03-20T10:30:00",这是因为JSON标准本身并不支持日期类型。在...
通常,Json-lib会将日期转换为Unix时间戳或者ISO 8601格式的字符串,但这可能不满足所有需求。有些情况下,我们可能希望自定义日期的格式,例如按照“年-月-日”或“月/日/年”的格式输出。 解决这个问题的关键在于...
7. 配置与定制:JsonLib允许开发者根据需求进行配置,比如设置日期格式、处理循环引用等,以满足不同项目的特定需求。 在实际使用中,为了确保JsonLib正常工作,可能还需要包含一些依赖库,这些库可能包含了JsonLib...
`json-lib` 是一个 Java 库,它提供了将 JSON 格式的数据转换为 Java 对象,以及将 Java 对象转换为 JSON 格式数据的功能。在 Java 开发中,`json-lib` 是一个常用的 JSON 处理工具,尤其适用于需要处理复杂 JSON ...
4. **JsonConfig**: 提供配置选项,可以定制JSON转换行为,如日期格式、null值处理等。 在实际开发中,使用json-lib进行JSON操作的步骤通常包括: 1. 导入json-lib库,如`import net.sf.json.JSONObject; import ...
在Java中,json-lib提供了一些基本的API来实现JSON和Java对象的转换。尽管相比于其他库,json-lib的更新较慢,但在一些老项目中仍被广泛使用,因为它对旧版本的Java兼容性较好。 在选择使用哪个JSON库时,开发者...
首先,jsonLib作为一个开源工具,它的主要目标是简化JSON与Java对象之间的转换。在Java中,我们经常需要将JSON字符串转化为Java对象,或者将Java对象转化为JSON字符串,以便在网络间传输数据或存储到数据库中。json...
与其他JSON库如Jackson相比,`json-lib`的一个显著特点是它支持多种Java对象类型,包括基本类型、集合、Map、日期等,使得数据转换更为便捷。 在使用`json-lib`时,开发者通常会先将Java对象转换成JSON格式的字符串...
4. **类型转换策略**:`json-lib`在处理不同类型的数据时,如日期、枚举等,会采用特定的转换策略。这些策略可以通过`JsonConfig`配置类进行定制。 5. **XML与JSON的相互转换**:`json-lib`还提供了一个独特功能,...
4. **支持多种Java类型**:json-lib支持包括基本类型、集合、数组、日期、自定义对象等多种Java类型的数据转换。 5. **性能优化**:尽管有其他更现代的JSON库如Gson和Jackson,json-lib-2.4依然因其简洁的API和相对...
1. **Java到JSON的转换**:JSON-Lib提供了一种简单的方式将Java对象,如数组、集合、Map、日期等转换为JSON字符串。这使得开发者能够方便地将业务对象以JSON格式发送到客户端。 2. **JSON到Java的转换**:反之,它...
2. `commons-lang-2.5.jar`:Apache Commons Lang,是一个实用工具类库,补充了Java语言的基本功能,如字符串操作、日期时间处理等,对于`json-lib`在处理JSON字符串时可能需要用到这些功能。 3. `commons-...
3. **支持多种数据类型**:`json-lib`不仅支持基本的数据类型如String、Number、Boolean,还支持日期、数组、集合和自定义对象的转换,满足了丰富的业务需求。 4. **性能优化**:`json-lib`针对不同的JDK版本进行...
json-lib允许开发者通过实现`JsonConfig`类的自定义转换规则,以处理特殊类型的Java对象或者处理日期、时间的格式。 4. **XML与JSON互转**: json-lib还提供了XML与JSON之间的转换功能,这对于那些需要在XML和...