java中Json對象與json數組

JSONObject與JSONArray的使用java

1、JAR包簡介json

      要使程序能夠運行必須引入JSON-lib包,JSON-lib包同時依賴於如下的JAR包:數組

      1.commons-lang.jar工具

      2.commons-beanutils.jarui

      3.commons-collections.jarthis

      4.commons-logging.jar .net

      5.ezmorph.jarorm

      6.json-lib-2.2.2-jdk15.jar對象

2、JSONObject對象使用element

     JSON- lib包是一個beans,collections,maps,java arrays 和XML和JSON互相轉換的包。在本例中,咱們將使用JSONObject類建立JSONObject對象,而後咱們打印這些對象的值。爲了使用 JSONObject對象,咱們要引入"net.sf.json"包。爲了給對象添加元素,咱們要使用put()方法。

package com.hwy;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JSONObjectSample {

 //建立JSONObject對象   
    private static JSONObject createJSONObject(){   
        JSONObject jsonObject = new JSONObject();   
        jsonObject.put("username","天涯草");   
        jsonObject.put("sex", "男");   
        jsonObject.put("QQ", "1");   
        jsonObject.put("Min.score", new Integer(99));   
        jsonObject.put("nickname", "天涯草");   
        return jsonObject;   
    }   
    public static void main(String[] args) {   
        JSONObject jsonObject = JSONObjectSample.createJSONObject();   
        //輸出jsonobject對象   
        System.out.println("jsonObject==>"+jsonObject);   
           
        //判讀輸出對象的類型   
        boolean isArray = jsonObject.isArray();   
        boolean isEmpty = jsonObject.isEmpty();   
        boolean isNullObject = jsonObject.isNullObject();   
        System.out.println("isArray:"+isArray+" isEmpty:"+isEmpty+" isNullObject:"+isNullObject);   
           
        //添加屬性   
        jsonObject.element("address", "天涯草");   
        System.out.println("添加屬性後的對象==>"+jsonObject);   
           
        //返回一個JSONArray對象   
        JSONArray jsonArray = new JSONArray();   
        jsonArray.add(0, "this is a jsonArray value");   
        jsonArray.add(1,"another jsonArray value");   
        jsonObject.element("jsonArray", jsonArray);   
        JSONArray array = jsonObject.getJSONArray("jsonArray");   
        System.out.println("返回一個JSONArray對象:"+array);   
        //添加JSONArray後的值   
//        {"username":"天涯草","sex":"男","QQ":"天涯草","Min.score":99,"天涯草":"天涯草","address":"天涯草","jsonArray":["this is a jsonArray value","another jsonArray value"]}  
        System.out.println("結果="+jsonObject);   
           
        //根據key返回一個字符串   
        String username = jsonObject.getString("username");   
        System.out.println("username==>"+username);  
        
        //把字符轉換爲 JSONObject
        String temp=jsonObject.toString();
        JSONObject object = JSONObject.fromObject(temp);
        //轉換後根據Key返回值
        System.out.println("qq="+object.get("QQ"));
        
    }  

}

 

如下是一個常用的工具類,和你們一塊兒分享:

Java代碼 

  1. /** 
  2.  * Copyright (c) linkwise 2007-2009 corporation.   
  3.  * All rights reserved 
  4.  */  
  5. package com.linghui.common.util;  
  6.   
  7. import java.util.ArrayList;  
  8. import java.util.Date;  
  9. import java.util.HashMap;  
  10. import java.util.Iterator;  
  11. import java.util.List;  
  12. import java.util.Map;  
  13.   
  14. import net.sf.json.JSONArray;  
  15. import net.sf.json.JSONObject;  
  16. import net.sf.json.JsonConfig;  
  17. import net.sf.json.util.CycleDetectionStrategy;  
  18.   
  19. import com.linghui.common.util.DateUtil;  
  20. import com.linghui.common.util.jsonutil.DateJsonValueProcessor;  
  21.   
  22. /** *//** 
  23.  * @author </br> <a href="mailto:fx19800215@163.com"> robert.feng</a> 
  24.  * 
  25.  */  
  26. public class JsonUtil ...{  
  27.   
  28.     /** *//** 
  29.      * 從一個JSON 對象字符格式中獲得一個java對象 
  30.      * @param jsonString 
  31.      * @param pojoCalss 
  32.      * @return 
  33.      */  
  34.     public static Object getObject4JsonString(String jsonString,Class pojoCalss)...{  
  35.         Object pojo;  
  36.         JSONObject jsonObject = JSONObject.fromObject( jsonString );    
  37.         pojo = JSONObject.toBean(jsonObject,pojoCalss);  
  38.         return pojo;  
  39.     }  
  40.       
  41.       
  42.       
  43.     /** *//** 
  44.      * 從json HASH表達式中獲取一個map,改map支持嵌套功能 
  45.      * @param jsonString 
  46.      * @return 
  47.      */  
  48.     public static Map getMap4Json(String jsonString)...{  
  49.         JSONObject jsonObject = JSONObject.fromObject( jsonString );    
  50.         Iterator  keyIter = jsonObject.keys();  
  51.         String key;  
  52.         Object value;  
  53.         Map valueMap = new HashMap();  
  54.   
  55.         while( keyIter.hasNext())  
  56.         ...{  
  57.             key = (String)keyIter.next();  
  58.             value = jsonObject.get(key);  
  59.             valueMap.put(key, value);  
  60.         }  
  61.           
  62.         return valueMap;  
  63.     }  
  64.       
  65.       
  66.     /** *//** 
  67.      * 從json數組中獲得相應java數組 
  68.      * @param jsonString 
  69.      * @return 
  70.      */  
  71.     public static Object[] getObjectArray4Json(String jsonString)...{  
  72.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  73.         return jsonArray.toArray();  
  74.           
  75.     }  
  76.       
  77.       
  78.     /** *//** 
  79.      * 從json對象集合表達式中獲得一個java對象列表 
  80.      * @param jsonString 
  81.      * @param pojoClass 
  82.      * @return 
  83.      */  
  84.     public static List getList4Json(String jsonString, Class pojoClass)...{  
  85.           
  86.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  87.         JSONObject jsonObject;  
  88.         Object pojoValue;  
  89.           
  90.         List list = new ArrayList();  
  91.         for ( int i = 0 ; i<jsonArray.size(); i++)...{  
  92.               
  93.             jsonObject = jsonArray.getJSONObject(i);  
  94.             pojoValue = JSONObject.toBean(jsonObject,pojoClass);  
  95.             list.add(pojoValue);  
  96.               
  97.         }  
  98.         return list;  
  99.   
  100.     }  
  101.       
  102.     /** *//** 
  103.      * 從json數組中解析出java字符串數組 
  104.      * @param jsonString 
  105.      * @return 
  106.      */  
  107.     public static String[] getStringArray4Json(String jsonString)...{  
  108.           
  109.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  110.         String[] stringArray = new String[jsonArray.size()];  
  111.         for( int i = 0 ; i<jsonArray.size() ; i++ )...{  
  112.             stringArray[i] = jsonArray.getString(i);  
  113.               
  114.         }  
  115.           
  116.         return stringArray;  
  117.     }  
  118.       
  119.     /** *//** 
  120.      * 從json數組中解析出javaLong型對象數組 
  121.      * @param jsonString 
  122.      * @return 
  123.      */  
  124.     public static Long[] getLongArray4Json(String jsonString)...{  
  125.           
  126.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  127.         Long[] longArray = new Long[jsonArray.size()];  
  128.         for( int i = 0 ; i<jsonArray.size() ; i++ )...{  
  129.             longArray[i] = jsonArray.getLong(i);  
  130.               
  131.         }  
  132.         return longArray;  
  133.     }  
  134.       
  135.     /** *//** 
  136.      * 從json數組中解析出java Integer型對象數組 
  137.      * @param jsonString 
  138.      * @return 
  139.      */  
  140.     public static Integer[] getIntegerArray4Json(String jsonString)...{  
  141.           
  142.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  143.         Integer[] integerArray = new Integer[jsonArray.size()];  
  144.         for( int i = 0 ; i<jsonArray.size() ; i++ )...{  
  145.             integerArray[i] = jsonArray.getInt(i);  
  146.               
  147.         }  
  148.         return integerArray;  
  149.     }  
  150.       
  151.     /** *//** 
  152.      * 從json數組中解析出java Date 型對象數組,使用本方法必須保證 
  153.      * @param jsonString 
  154.      * @return 
  155.      */  
  156.     public static Date[] getDateArray4Json(String jsonString,String DataFormat)...{  
  157.           
  158.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  159.         Date[] dateArray = new Date[jsonArray.size()];  
  160.         String dateString;  
  161.         Date date;  
  162.           
  163.         for( int i = 0 ; i<jsonArray.size() ; i++ )...{  
  164.             dateString = jsonArray.getString(i);  
  165.             date = DateUtil.stringToDate(dateString, DataFormat);  
  166.             dateArray[i] = date;  
  167.               
  168.         }  
  169.         return dateArray;  
  170.     }  
  171.       
  172.     /** *//** 
  173.      * 從json數組中解析出java Integer型對象數組 
  174.      * @param jsonString 
  175.      * @return 
  176.      */  
  177.     public static Double[] getDoubleArray4Json(String jsonString)...{  
  178.           
  179.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  180.         Double[] doubleArray = new Double[jsonArray.size()];  
  181.         for( int i = 0 ; i<jsonArray.size() ; i++ )...{  
  182.             doubleArray[i] = jsonArray.getDouble(i);  
  183.               
  184.         }  
  185.         return doubleArray;  
  186.     }  
  187.       
  188.       
  189.     /** *//** 
  190.      * 將java對象轉換成json字符串 
  191.      * @param javaObj 
  192.      * @return 
  193.      */  
  194.     public static String getJsonString4JavaPOJO(Object javaObj)...{  
  195.           
  196.         JSONObject json;  
  197.         json = JSONObject.fromObject(javaObj);  
  198.         return json.toString();  
  199.           
  200.     }  
  201.       
  202.       
  203.       
  204.       
  205.     /** *//** 
  206.      * 將java對象轉換成json字符串,並設定日期格式 
  207.      * @param javaObj 
  208.      * @param dataFormat 
  209.      * @return 
  210.      */  
  211.     public static String getJsonString4JavaPOJO(Object javaObj , String dataFormat)...{  
  212.           
  213.         JSONObject json;  
  214.         JsonConfig jsonConfig = configJson(dataFormat);  
  215.         json = JSONObject.fromObject(javaObj,jsonConfig);  
  216.         return json.toString();  
  217.           
  218.           
  219.     }  
  220.       
  221.       
  222.       
  223.     /** *//** 
  224.      * @param args 
  225.      */  
  226.     public static void main(String[] args) ...{  
  227.         // TODO 自動生成方法存根  
  228.   
  229.     }  
  230.       
  231.     /** *//** 
  232.      * JSON 時間解析器具 
  233.      * @param datePattern 
  234.      * @return 
  235.      */  
  236.     public static JsonConfig configJson(String datePattern) ...{     
  237.             JsonConfig jsonConfig = new JsonConfig();     
  238.             jsonConfig.setExcludes(new String[]...{""});     
  239.             jsonConfig.setIgnoreDefaultExcludes(false);     
  240.             jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);     
  241.             jsonConfig.registerJsonValueProcessor(Date.class,     
  242.                 new DateJsonValueProcessor(datePattern));     
  243.             
  244.             return jsonConfig;     
  245.         }    
  246.       
  247.     /** *//** 
  248.      *  
  249.      * @param excludes 
  250.      * @param datePattern 
  251.      * @return 
  252.      */  
  253.     public static JsonConfig configJson(String[] excludes,     
  254.             String datePattern) ...{     
  255.             JsonConfig jsonConfig = new JsonConfig();     
  256.             jsonConfig.setExcludes(excludes);     
  257.             jsonConfig.setIgnoreDefaultExcludes(false);     
  258.             jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);     
  259.             jsonConfig.registerJsonValueProcessor(Date.class,     
  260.                 new DateJsonValueProcessor(datePattern));     
  261.             
  262.             return jsonConfig;     
  263.         }    
  264.   
  265. }  

 

Java代碼 

  1. /** *//** 
  2.  * linkwise 
  3.  */  
  4. package com.linghui.common.util.jsonutil;  
  5.   
  6. import java.text.DateFormat;  
  7. import java.text.SimpleDateFormat;  
  8. import java.util.Date;  
  9.   
  10. import net.sf.json.JsonConfig;  
  11. import net.sf.json.processors.JsonValueProcessor;  
  12.   
  13.   
  14.   
  15. /** *//** 
  16.  *  @author </br> <a href="mailto:fx19800215@163.com"> robert.feng</a> 
  17.  * 
  18.  */  
  19. public class DateJsonValueProcessor implements JsonValueProcessor ...{  
  20.   
  21.       
  22.     public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";     
  23.     private DateFormat dateFormat;     
  24.   
  25.       
  26.       
  27.     /** *//**   
  28.      * 構造方法.   
  29.      *   
  30.      * @param datePattern 日期格式   
  31.      */    
  32.     public DateJsonValueProcessor(String datePattern) ...{     
  33.             
  34.         if( null == datePattern )  
  35.             dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);    
  36.         else  
  37.             dateFormat = new SimpleDateFormat(datePattern);   
  38.           
  39.     }     
  40.   
  41.       
  42.       
  43.     /**//* (非 Javadoc) 
  44.      * @see net.sf.json.processors.JsonValueProcessor#processArrayValue(java.lang.Object, net.sf.json.JsonConfig) 
  45.      */  
  46.     public Object processArrayValue(Object arg0, JsonConfig arg1) ...{  
  47.         // TODO 自動生成方法存根  
  48.         return process(arg0);     
  49.     }  
  50.   
  51.     /**//* (非 Javadoc) 
  52.      * @see net.sf.json.processors.JsonValueProcessor#processObjectValue(java.lang.String, java.lang.Object, net.sf.json.JsonConfig) 
  53.      */  
  54.     public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) ...{  
  55.         // TODO 自動生成方法存根  
  56.         return process(arg1);     
  57.     }  
  58.       
  59.     private Object process(Object value) ...{     
  60.         return dateFormat.format((Date) value);     
  61.     }     
  62.   
  63.   
  64. }  
相關文章
相關標籤/搜索