• [转]java中JSONObject与JSONArray的使用详细说明及有关JSON的工具类


    JSONObject与JSONArray的使用

    一、JAR包简介

          要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包:

          1.commons-lang.jar

          2.commons-beanutils.jar

          3.commons-collections.jar

          4.commons-logging.jar 

          5.ezmorph.jar

          6.json-lib-2.2.2-jdk15.jar

    二、JSONObject对象使用

         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. }  

     

  • 相关阅读:
    Flask框架基础4
    Flask框架基础3
    Flask框架基础2
    Flask框架基础1
    项目上线流程-Django后端+vue前端
    Git操作
    DRF-jwt认证
    四种方式实现单例模式
    drf框架4-views视图家族操作
    drf框架3-ModelSerializer操作序列化与反序列化
  • 原文地址:https://www.cnblogs.com/ZhuRenWang/p/4765533.html
Copyright © 2020-2023  润新知