Json的使用

1、DTO:Data Transfer Object,数据传送对象 
 
2、对于日期格式的问题,也已经处理 
 
3、json-lib-2.2.2-jdk13.jar (2.1在日期数组 json->java有问题) 
 
工具类JsonUtil代码如下: 
 
Java代码   
public class JsonUtil {       
     
           
      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";       
               
           
      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);       
           
               
           
      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);       
           
               
           
      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;       
           
               
           
      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;       
           
               
           
      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;       
           
               
           
      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;       
           
               
           
      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;       
           
               
           
      public static Object[] getObjectArrayFromJson(String jsonString) {       
              JSONArray jsonArray = JSONArray.fromObject(jsonString);       
              return jsonArray.toArray();       
           
     
     
           
      public static String getJSONString(Object object) throws Exception{       
              String jsonString = null;       
              //日期值处理器       
              JsonConfig jsonConfig = new JsonConfig();       
              jsonConfig.registerJsonValueProcess or(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 { 
 
   
  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"; 
   
   
  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); 
 
   
   
  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); 
 
   
   
  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; 
 
   
   
  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; 
 
   
   
  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; 
 
   
   
  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; 
 
   
   
  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; 
     
   
   
      public static Object[] getObjectArrayFromJson(String jsonString) { 
              JSONArray jsonArray = JSONArray.fromObject(jsonString); 
              return jsonArray.toArray(); 
     
 
 
   
  public static String getJSONString(Object object) throws Exception{ 
  String jsonString = null; 
  //日期值处理器 
  JsonConfig jsonConfig = new JsonConfig(); 
  jsonConfig.registerJsonValueProcess or(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;       
     
     
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; 
 
 
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);   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值