`

JSON转JAVA

 
阅读更多
转:
1、DTO:Data Transfer Object,数据传送对象   
  
2、对于日期格式的问题,也已经处理   
  
3、json-lib-2.2.2-jdk13.jar (2.1在日期数组 json->java有问题)   
  
工具类JsonUtil代码如下:   
  
Java代码    
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 JsonDateValueProcessor());      
        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 static void main(String[] arg) throws Exception{      
        String s = "{status : 'success'}";      
        System.out.println(" object : " + JsonUtil.getJSONString(s));      
    }      
}     
  
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 JsonDateValueProcessor());   
  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 static void main(String[] arg) throws Exception{   
  String s = "{status : 'success'}";   
  System.out.println(" object : " + JsonUtil.getJSONString(s));   
 }   
}    
  
对于java对象转换成json数据格式时,要对日期格式化常用格式,类:JsonDateValueProcessor   
  
Java代码    
import java.text.SimpleDateFormat;      
import java.util.Date;      
     
import net.sf.json.JsonConfig;      
import net.sf.json.processors.JsonValueProcessor;      
     
/*    
 * @author johncon    
 * 创建日期 2008-9-10    
 * json日期值处理器    
 */     
public class JsonDateValueProcessor implements JsonValueProcessor {      
     
    private String format = "yyyy-MM-dd HH:mm:ss";      
     
    public JsonDateValueProcessor() {      
     
    }      
     
    public JsonDateValueProcessor(String format) {      
        this.format = format;      
    }      
     
    public Object processArrayValue(Object value, JsonConfig jsonConfig) {      
        return process(value, jsonConfig);      
    }      
     
    public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {      
        return process(value, jsonConfig);      
    }      
          
    private Object process( Object value, JsonConfig jsonConfig ) {      
        if (value instanceof Date) {      
            String str = new SimpleDateFormat(format).format((Date) value);      
            return str;      
        }      
        return value == null ? null : value.toString();      
    }      
     
    public String getFormat() {      
        return format;      
    }      
     
    public void setFormat(String format) {      
        this.format = format;      
    }      
     
}     
  
import java.text.SimpleDateFormat;   
import java.util.Date;   
  
import net.sf.json.JsonConfig;   
import net.sf.json.processors.JsonValueProcessor;   
  
/*  
 * @author johncon  
 * 创建日期 2008-9-10  
 * json日期值处理器  
 */  
public class JsonDateValueProcessor implements JsonValueProcessor {   
  
 private String format = "yyyy-MM-dd HH:mm:ss";   
  
 public JsonDateValueProcessor() {   
  
 }   
  
 public JsonDateValueProcessor(String format) {   
  this.format = format;   
 }   
  
 public Object processArrayValue(Object value, JsonConfig jsonConfig) {   
  return process(value, jsonConfig);   
 }   
  
 public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {   
  return process(value, jsonConfig);   
 }   
    
 private Object process( Object value, JsonConfig jsonConfig ) {   
  if (value instanceof Date) {   
   String str = new SimpleDateFormat(format).format((Date) value);   
   return str;   
  }   
  return value == null ? null : value.toString();   
 }   
  
 public String getFormat() {    
分享到:
评论

相关推荐

    JSON转java类

    这个“JSON转Java类”的工具正是为了解决这个问题而设计的。它能将JSON字符串自动转化为符合Java POJO(Plain Old Java Object)规范的类,而且特别的是,它会将JSON中的下划线命名方式自动转换为Java中的驼峰式命名...

    json转java包

    总结来说,"json转java包"可能是一个集成了JSON解析、MyBatis代码生成和MySQL连接的工具或库,它的目的是简化Java开发者处理JSON数据以及与数据库交互的过程,提高开发效率。在实际使用时,开发者需要结合提供的jar...

    JSON转JAVA & C# 转换工具.rar

    标题“JSON转JAVA & C# 转换工具.rar”指的是一个包含两个不同语言环境下的JSON转换工具的压缩包,目的是帮助开发者快速地将JSON格式的数据转换为对应的Java或C#实体类。 描述中提到的“绝对好用的工具”,暗示了这...

    Json与java对象之间相互转换源码

    在Java中,我们经常需要将JSON字符串与Java对象进行相互转换,以便于数据的传输和处理。本篇文章将详细探讨这个过程,以及如何使用常见的Java JSON库,如Gson和Jackson,进行JSON与Java对象的转换。 首先,让我们...

    json转java源代码工具

    每次做android的时候都会有很多json数据,而且里面的属性还要一个一个写在类里面,很麻烦,然后做了这个json转java源代码的工具。 由于是java swing 写的,必须要java环境才能运行哦。 没有要资源分,免费下载。 ...

    json格式转换为java实体类,idea导入即可

    在Java开发中,我们经常需要将JSON字符串转换为Java实体类,以便于操作和处理这些数据。 本资源提供了一种方便快捷的方法,通过IDEA(IntelliJ IDEA)工具,可以直接将JSON格式的数据转换为对应的Java实体类。IDEA...

    json转换java

    是一款强大的json转换工具,用了都说好

    json转换java常用工具类

    `getDTO`方法接收一个JSON字符串和一个Java类的Class对象作为参数,其目的是将JSON字符串解析成对应的Java对象。首先,通过`JSONObject.fromObject(jsonString)`将JSON字符串转换为`JSONObject`,然后使用`...

    多层集合嵌套的JSON数据转化为Java对象(src.zip)

    Java作为一种常用的后端开发语言,需要处理这些JSON数据,将其转化为Java对象以便于操作。本主题主要关注如何使用`net.sf.json.JSONObject`这个库将多层集合嵌套的JSON数据转换为Java对象。 `...

    批量转换json到java类工具

    需要提前安装java sdk。 如果应对restful的请求和回应,输入和输出类可以放在同一个包里。否则json文件路径,class名,package名需要一一对应,避免出现同一个包里有相同的类。 具体使用方法参考 ...

    JSON与JAVA数据的转换

    - **Java转JSON** 1. **将Java List转换为JSON:** - 直接使用`JSONArray.fromObject()`方法即可。 ```java List&lt;String&gt; list = new ArrayList(); list.add("first"); list.add("second"); JSONArray ...

    json和java互转测试项目

    在"json和java互转测试项目"中,我们重点关注的是如何使用`json-lib`库进行JSON与Java对象的转换。`json-lib`库提供了一套完整的API,可以方便地将Java的Map、ArrayList、自定义对象等转换为JSON格式,同时也能将...

    json格式与java类对象相互转换

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于前后端交互,而Java作为后端开发的主要语言,常常需要将JSON格式的数据与Java类对象进行相互转换,以便于数据的处理和传输。Jackson库是...

    JAVA-JSON工具转换类

    它可以方便地将一种类型的数据转换成另一种类型,比如将字符串转成整数,日期转成字符串等,这对于JSON数据处理的灵活性至关重要。 `JsonUtil.java`看起来是一个自定义的工具类,很可能包含了对`json-lib`和`...

    JSON转成javabean获取webservice实现类的传递

    例如,创建一个`JsonUtils`类,包含一个静态方法用于JSON转Java Bean: ```java public class JsonUtils { public static &lt;T&gt; T jsonToBean(String jsonString, Class&lt;T&gt; clazz) { Gson gson = new Gson(); ...

    用于java对象与json对象间的相互转换(net.sf.json.JSONObject)

    在Java开发中,数据交换和存储常常涉及到JSON(JavaScript Object Notation)格式,因为它轻量级、易读写且被广泛支持。`net.sf.json.JSONObject`是开源库Apache Commons的一个组件,提供了Java对象与JSON对象之间的...

    JSON转换为JAVA对象及日期格式转换处理 -

    JSON转换为JAVA对象及日期格式转换处理 -

    json转换所需所有jar包

    1. **Java对象转JSON**:如果你有一个Java对象,比如一个用户类`User`,你可以使用JSON库将其转换为JSON字符串。这通常通过调用对象的`toString()`方法或者使用JSON库提供的特定方法如`toJson()`完成。 2. **JSON转...

    二维数组转json的java源码

    在Java编程中,将二维数组转换为JSON对象是一项常见的任务,特别是在处理表格数据或结构化信息时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它...

Global site tag (gtag.js) - Google Analytics