JSON和java对象互转
来源:互联网 发布:python input split 编辑:程序博客网 时间:2024/06/05 00:28
//data为页面JSON格式的对象数据
BaseInfoPojo jsonBaseInfoPojo = (BaseInfoPojo) JsonUtil.getDTO(data,
BaseInfoPojo.class);
public class JsonUtil {
/**
* 从一个JSON 对象字符格式中得到一个java对象,形如:
* @param jsonString json字符
* @param clazz 转换java对象的class
* @return 返回java对象
*/
public static Object getDTO(String jsonString, Class clazz){
JSONObject jsonObject = null;
setDataFormat2JAVA();
jsonObject = JSONObject.fromObject(jsonString);
return JSONObject.toBean(jsonObject, clazz);
}
/**
* 从一个JSON 对象字符格式中得到一个java对象,其中beansList是一类的集合,形如:
* {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...},
* beansList:[{}, {}, ...]}
* @param jsonString json字符
* @param clazz 转换java对象的class
* @param map 属�?的类�?(key : 属�?�? value : 属�?类型class,如果该属性是集合,则是集合中对象的属�?类型) eg: ("beansList" : Bean.class)
* @return 返回java对象
*/
public static Object getDTO(String jsonString, Class clazz, Map map){
JSONObject jsonObject = null;
setDataFormat2JAVA();
jsonObject = JSONObject.fromObject(jsonString);
return JSONObject.toBean(jsonObject, clazz, map);
}
/**
* 从一个JSON数组得到�?��java对象数组,形如:
* [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]
* @param jsonString json字符�?
* @param clazz 转换java对象的class
* @return java对象数组
*/
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 jsonString json字符�?
* @param clazz 转换java对象的class
* @param map 属�?的类�?(key : 属�?�? value : 属�?类型class,如果该属性是集合,则是集合中对象的属�?类型)
* @return java对象数组
*/
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 jsonString json字符�?
* @param clazz 转换java对象的class
* @return 包含java对象的list
*/
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 jsonString json字符�?
* @param clazz 转换java对象的class
* @param map 属�?的类�?(key : 属�?�? value : 属�?类型class,如果该属性是集合,则是集合中对象的属�?类型)
* @return 包含java对象的list
*/
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 jsonString json字符�?
* @return 返回java.util.Map
*/
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中是java基本的数据对象类型
* json形如:["123", "456"]
* @param jsonString json字符串
* @return 基本数据对象数组
*/
public static Object[] getObjectArrayFromJson(String jsonString) {
setDataFormat2JAVA();
JSONArray jsonArray = JSONArray.fromObject(jsonString);
return jsonArray.toArray();
}
/**
* 把数据对象转换成json字符串
* DTO对象形如:{"id" : idValue, "name" : nameValue, ...}
* 数组对象形如:[{}, {}, {}, ...]
* map对象形如:{key1 : {"id" : idValue, "name" : nameValue, ...}, key2 : {}, ...}
* @param object java的任何对象
* @return json格式字符串
*/
public static String getJSONString(Object object) throws Exception{
String jsonString = null;
try{
//日期值处理器
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor());
if(object != null){
if(object instanceof Collection || object instanceof Object[]){
jsonString = JSONArray.fromObject(object,jsonConfig).toString();
}else if(object instanceof String||object instanceof Integer
||object instanceof Boolean||object instanceof Double||object instanceof Float){
jsonString="{"+object.toString()+"}";
}else{
jsonString = JSONObject.fromObject(object,jsonConfig).toString();
}
}
}catch(Exception e){
e.printStackTrace();
}
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 static void main(String[] arg) throws Exception{
List list =new ArrayList();
for (int i = 0; i < 10; i++) {
// Map map=new HashMap();
// map.put("za", "a");
// list.add(map);
Map map =new HashMap();
map.put("a", "a");
map.put("b", new Date());
list.add(map);
}
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor());
Map map1=getMapFromJson("{\"b\":\"2011-05-30 22:18:35\",\"a\":\"a\"}");
System.out.println(JSONObject.fromObject(new Date(), jsonConfig).toString());
// Map m=new HashMap();
// m.put("b", B.class);
// m.put("map", Map.class);
//System.out.println(" object : " + JSONArray.fromObject(list).toString());
// A a=new A();
// System.out.println(" object : " + JsonUtil.getJSONString(list));
// List list11=getDTOList(JsonUtil.getJSONString(list),Map.class);
// System.out.println(" object : " + list11.get(0));
// List list1=JsonUtil.getDTOList(JsonUtil.getJSONString(list),A.class,m);
// for (Iterator iterator = list1.iterator(); iterator.hasNext();) {
// A a = (A) iterator.next();
// System.out.print(a.getName()+",");
// List list2 = a.getB();
// for (Iterator iterator2 = list2.iterator(); iterator2.hasNext();) {
// B b = (B) iterator2.next();
// System.out.print(b.getAbc()+",");
// System.out.print(b.getMap().get("bs")+",");
// }
// Map ma=a.getMap();
// System.out.println(ma.get("as").toString());
//
// }
// System.out.println("aa");
// A a = (A) Class.forName("com.ibm.crl.idop.util.A").newInstance();
}
}
- JSON和java对象互转
- java对象和json的互转
- JSON和java对象的互转
- json和java对象互转
- java对象和JSON字符串互转
- JSON和java对象的互转
- JSON字符串和java对象的互转【json-lib】
- JSON字符串和java对象的互转【json-lib】
- JSON字符串和java对象的互转【json-lib】
- JSON字符串和java对象的互转【json-lib】
- JSON字符串和java对象的互转【json-lib】
- JAVA中JSON和java对象之间的互转
- gson处理json和java对象互转
- java 对象 和 json 之间互转 例子
- JSON字符串和java对象的互转
- JSON字符串和java对象的互转
- JSON字符串和java对象的互转
- java 对象转 json 和 xml
- 学习LDAP
- 双边滤波(Bilateral Filter)详解
- XT 1175 Hurry Up
- C#里的数据类型转换 (3)
- opencv图像修复算法cvInpaint(Telea的FMM算法)
- JSON和java对象互转
- 无法打开登录所请求的数据库 "XXXX"。登录失败。 SQLServer2008
- IT的好网站(不断更新中)
- lucene笔记____IndexReader和IndexWriter注意事项
- Java设计模式之观察者
- 在应用间利用KeyChain共享数据
- 代理模式(Proxy Pattern)
- 【Linux Tips】strace -f 可 fork 子进程
- TApplicaiton.ProcessMessages不能在非主线程使用