0 0

json转java对象3

public class Szmb {
private String recid;
private String recdate;
private String ym;
private String ingnalnum;
private String signaltxt;
...
//get set}
[{"recid":"10305","recdate":"2010-08-20 05:30","ym":"201008","ingnalnum":"0","signaltxt":"\u5f71\u54cd\u6211\u5e02\u7684\u96f7\u66b4\u4e91\u56e2\u5df2\u51cf\u5f31\uff0c\u5e02\u6c14\u8c61\u53f0\u4e8e8\u670820\u65e55\u65f630\u5206\u5728\u5168\u5e02\u53d6\u6d88\u96f7\u7535\u9884\u8b66\u4fe1\u53f7"},
{"recid":"10304","recdate":"2010-08-20 03:50","ym":"201008","ingnalnum":"4194304","signaltxt":"\u53d7\u96f7\u66b4\u4e91\u56e2\u5f71\u54cd\uff0c\u6211\u5e02\u5927\u90e8\u5206\u5730\u533a\u5c06\u51fa\u73b0\u96f7\u66b4\uff0c\u5e02\u6c14\u8c61\u53f0\u4e8e8\u670820\u65e53\u65f650\u5206\u5728\u5168\u5e02\u53d1\u5e03\u96f7\u7535\u9884\u8b66\u4fe1\u53f7"}]
上面的把json的数据转换为List<Szmb>,使得能够运行for(Szmb ss:szmb){System.out.println(ss.getRecdate());}。
请教方法。

问题补充:还是没解决
2010年8月20日 15:19

5个答案 按时间排序 按投票排序

0 0

用我之前发的这个

/**    
     * 从一个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;      
    }    

这个既可 

2010年8月20日 15:32
0 0

有现成的框架可以用,就是JSON-lib

下载地址http://json-lib.sourceforge.net/

用法参见http://developer.51cto.com/art/200906/129090.htm转成List很简单

2010年8月20日 15:28
0 0

使用JSON-LIB可以极大的简化JAVA对象转换成JSON对象所需进行的操作,更可以避免人工操作生成JSON对象字符串时带来的麻烦和误操作:



人家都帮你封装好了的!
动手实践下就OK 了!!!!

参考下实例:

http://bolingsky.blog.sohu.com/74165282.html

2010年8月20日 15:26
0 0

上面的很全了  你可以继续扩展

2010年8月20日 15:25
0 0

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() {
  return format;
 }

 public void setFormat(String format) {
  this.format = format;
 }

} 

对于对象中有明确类型的对象属性,可不管;但对象中有集合属性的,由于类型不明确,所以要先明确类型:

Java代码 
String jsonString = request.getParameter("json");   
//增加对象中的集合属性的类型以及对象元素中的对象属性的集合属性的类型   
Map clazzMap = new HashMap();   
//secondItems是FirstDTO里的集合属性   
clazzMap.put("secondItems", SecondDTO.class);   
//thirdItems是SecondDTO里的集合属性   
clazzMap.put("thirdItems", ThirdDTO.class);   
FirstDTO firstDTO = (FirstDTO)JsonUtil.getDTO(jsonString, FirstDTO.class, clazzMap); 

2010年8月20日 15:25

相关推荐

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

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

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

    1. 将Java对象转换为JSON字符串,同样使用`ObjectMapper`: ```java User john = new User(1, "John", "john@example.com"); String johnJson = mapper.writeValueAsString(john); ``` 2. 对于集合类型,如List或...

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

    net.sf.json.JSONObject ==&gt; Java对象

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

    是开源库Apache Commons的一个组件,提供了Java对象与JSON对象之间的转换功能。下面将详细阐述如何使用`JSONObject`进行JSON操作。 ### 1. 解析JSON字符串 当你从服务器获取或从文件读取到一个JSON字符串时,可以...

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

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

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

    要使用 `json-lib` 实现 JSON 与 Java 对象的互转,首先需要在项目中引入该库。如果你使用的是 Maven,可以在 `pom.xml` 文件中添加如下依赖: ```xml &lt;groupId&gt;net.sf.json-lib&lt;/groupId&gt; &lt;artifactId&gt;json-lib...

    JSON与JAVA对象之间的转换

    在Java开发中,我们经常需要将JSON字符串与Java对象之间进行转换,以便在服务器端处理来自客户端的数据,或者将数据以JSON格式发送回客户端。这里我们将重点讨论两种常用的库:Gson和Jackson,它们都提供了方便的...

    json转对象(java 多级嵌套)

    5. **反向操作:Java对象转JSON** 除了将JSON转换为Java对象,我们还可以使用`ObjectMapper`将Java对象转换回JSON字符串,这对于前端展示或存储数据非常有用: ```java String json = mapper.writeValueAsString...

    json转对象数组与对象数组转json --Java

    json转对象数组与数组转json--java--

    java对象转JSON

    1.一款将java对象转成json或是将json转成java对象的jar文件; 2.在网上找了半天才找到,希望大家共享; 3.使用方法,大家在网上随便找,很多,很简单,一看便会; 4.此包在eclipse中和AndroidStudio中都可以用,但是,你如果...

    使用jackson完成json与java对象的互相转换实例

    本实例将详细介绍如何使用Jackson库进行JSON到Java对象的反序列化以及Java对象到JSON的序列化。 首先,我们需要引入Jackson库。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    Java对象和JSON互转换利器-Gson

    Java对象转JSON** 要将一个Java对象转换为JSON字符串,首先需要创建一个Gson实例,然后调用`toJson()`方法。例如,有一个简单的`Person`类: ```java public class Person { private String name; private int ...

    json转换所需所有jar包

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

    json与java对象互转

    json与java对象互转

    json和java互转测试项目

    - **Java对象转JSON**:你可以使用`net.sf.json.JSONObject.fromObject()`方法将Java对象转换成JSON。例如,如果你有一个User类,你可以这样转换: ```java User user = new User("John", "Doe"); JSONObject ...

    json转java包

    标题中的“json转java包”可能是指一个工具或者库,用于帮助开发者便捷地进行JSON与Java对象之间的转换。它可能是包含了一些预配置或定制化的功能,以适应特定的项目需求。 描述中提到的几个jar包,它们分别是: 1...

    JAVA-JSON工具转换类

    可能包含的方法有`toJson()`(将Java对象转换为JSON字符串)、`fromJson()`(将JSON字符串解析为Java对象)、`convertToMap()`(将JSON字符串转换为Map)以及`convertToList()`(将JSON字符串转换为List)等。...

    java对象映射器(基于jackson将Java对象转为json,或者将json转为Java对象)

    答:将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象] 从Java对象生成JSON的过程称为 [序列化Java对象到JSON] 为什么用它? 答:我数据库中的主键是使用雪花算法生成的,就是因为用id的位数太多,导致在...

    使用jackson完成json与Java对象互转

    Jackson库是Java领域中处理JSON的利器,它提供了高效且灵活的API来实现JSON与Java对象之间的转换。本文将详细介绍如何使用Jackson库进行JSON与Java对象的互转。 首先,我们需要引入Jackson库的依赖。对于Maven项目...

    json 字符串转java对象,java对象转json字符串

    自己有空时用java反射写的json转化工具,有不完善之处,多包涵

Global site tag (gtag.js) - Google Analytics