jsonObject的使用

来源:互联网 发布:check windows version 编辑:程序博客网 时间:2024/05/21 09:28

        在项目中难免会用java处理json格式的数据,因此封装了一个JSONUtil工具类。

JSONUtil.java

Java代码  收藏代码
  1. package com.bijian.json.study;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.Date;  
  5. import java.util.HashMap;  
  6. import java.util.Iterator;  
  7. import java.util.List;  
  8. import java.util.Map;  
  9.   
  10. import net.sf.json.JSONArray;  
  11. import net.sf.json.JSONObject;  
  12. import net.sf.json.JsonConfig;  
  13. import net.sf.json.util.CycleDetectionStrategy;  
  14.   
  15. public class JSONUtil {  
  16.   
  17.     /** 
  18.      * 从一个JSON 对象字符格式中得到一个java对象 
  19.      * @param jsonString 
  20.      * @param pojoCalss 
  21.      * @return 
  22.      */  
  23.     public static Object getObject4JsonString(String jsonString, Class pojoCalss) {  
  24.   
  25.         Object pojo;  
  26.         JSONObject jsonObject = JSONObject.fromObject(jsonString);  
  27.         pojo = JSONObject.toBean(jsonObject, pojoCalss);  
  28.         return pojo;  
  29.     }  
  30.   
  31.     /** 
  32.      * 从json HASH表达式中获取一个map,改map支持嵌套功能 
  33.      * @param jsonString 
  34.      * @return 
  35.      */  
  36.     public static Map getMap4Json(String jsonString) {  
  37.   
  38.         JSONObject jsonObject = JSONObject.fromObject(jsonString);  
  39.         Iterator keyIter = jsonObject.keys();  
  40.         String key;  
  41.         Object value;  
  42.         Map valueMap = new HashMap();  
  43.         while (keyIter.hasNext()) {  
  44.             key = (String) keyIter.next();  
  45.             value = jsonObject.get(key);  
  46.             valueMap.put(key, value);  
  47.         }  
  48.         return valueMap;  
  49.     }  
  50.   
  51.     /** 
  52.      *  
  53.      * 从json数组中得到相应java数组 
  54.      *  
  55.      * @param jsonString 
  56.      *  
  57.      * @return 
  58.      */  
  59.     public static Object[] getObjectArray4Json(String jsonString) {  
  60.   
  61.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  62.         return jsonArray.toArray();  
  63.     }  
  64.   
  65.     /** 
  66.      * 从json对象集合表达式中得到一个java对象列表 
  67.      * @param jsonString 
  68.      * @param pojoClass 
  69.      * @return 
  70.      */  
  71.     public static List getList4Json(String jsonString, Class pojoClass) {  
  72.   
  73.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  74.         JSONObject jsonObject;  
  75.         Object pojoValue;  
  76.         List list = new ArrayList();  
  77.         for (int i = 0; i < jsonArray.size(); i++) {  
  78.             jsonObject = jsonArray.getJSONObject(i);  
  79.             pojoValue = JSONObject.toBean(jsonObject, pojoClass);  
  80.             list.add(pojoValue);  
  81.         }  
  82.         return list;  
  83.     }  
  84.   
  85.     /** 
  86.      *  
  87.      * 从json数组中解析出java字符串数组 
  88.      *  
  89.      * @param jsonString 
  90.      *  
  91.      * @return 
  92.      */  
  93.     public static String[] getStringArray4Json(String jsonString) {  
  94.   
  95.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  96.         String[] stringArray = new String[jsonArray.size()];  
  97.         for (int i = 0; i < jsonArray.size(); i++) {  
  98.             stringArray[i] = jsonArray.getString(i);  
  99.         }  
  100.         return stringArray;  
  101.     }  
  102.   
  103.     /** 
  104.      * 从json数组中解析出javaLong型对象数组 
  105.      * @param jsonString 
  106.      * @return 
  107.      */  
  108.     public static Long[] getLongArray4Json(String jsonString) {  
  109.   
  110.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  111.         Long[] longArray = new Long[jsonArray.size()];  
  112.         for (int i = 0; i < jsonArray.size(); i++) {  
  113.             longArray[i] = jsonArray.getLong(i);  
  114.         }  
  115.         return longArray;  
  116.     }  
  117.   
  118.     /** 
  119.      * 从json数组中解析出java Integer型对象数组 
  120.      * @param jsonString 
  121.      * @return 
  122.      */  
  123.     public static Integer[] getIntegerArray4Json(String jsonString) {  
  124.   
  125.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  126.         Integer[] integerArray = new Integer[jsonArray.size()];  
  127.         for (int i = 0; i < jsonArray.size(); i++) {  
  128.             integerArray[i] = jsonArray.getInt(i);  
  129.         }  
  130.         return integerArray;  
  131.     }  
  132.   
  133.     /** 
  134.      * 从json数组中解析出java Date 型对象数组,使用本方法必须保证 
  135.      * @param jsonString 
  136.      * @return 
  137.      */  
  138.     public static Date[] getDateArray4Json(String jsonString, String DataFormat) {  
  139.   
  140.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  141.         Date[] dateArray = new Date[jsonArray.size()];  
  142.         String dateString;  
  143.         Date date;  
  144.         for (int i = 0; i < jsonArray.size(); i++) {  
  145.             dateString = jsonArray.getString(i);  
  146.             date = DateUtil.stringToDate(dateString, DataFormat);  
  147.             dateArray[i] = date;  
  148.         }  
  149.         return dateArray;  
  150.     }  
  151.   
  152.     /** 
  153.      * 从json数组中解析出java Integer型对象数组 
  154.      * @param jsonString 
  155.      * @return 
  156.      */  
  157.     public static Double[] getDoubleArray4Json(String jsonString) {  
  158.   
  159.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  160.         Double[] doubleArray = new Double[jsonArray.size()];  
  161.         for (int i = 0; i < jsonArray.size(); i++) {  
  162.             doubleArray[i] = jsonArray.getDouble(i);  
  163.         }  
  164.         return doubleArray;  
  165.     }  
  166.   
  167.     /** 
  168.      *  
  169.      * 将java对象转换成json字符串 
  170.      *  
  171.      * @param javaObj 
  172.      *  
  173.      * @return 
  174.      */  
  175.     public static String getJsonString4JavaPOJO(Object javaObj) {  
  176.   
  177.         JSONObject json;  
  178.         json = JSONObject.fromObject(javaObj);  
  179.         return json.toString();  
  180.     }  
  181.   
  182.     /** 
  183.      * 将java对象转换成json字符串,并设定日期格式 
  184.      * @param javaObj 
  185.      * @param dataFormat 
  186.      * @return 
  187.      */  
  188.     public static String getJsonString4JavaPOJO(Object javaObj, String dataFormat) {  
  189.   
  190.         JSONObject json;  
  191.         JsonConfig jsonConfig = configJson(dataFormat);  
  192.         json = JSONObject.fromObject(javaObj, jsonConfig);  
  193.         return json.toString();  
  194.     }  
  195.   
  196.     /** 
  197.      * JSON 时间解析器具 
  198.      * @param datePattern 
  199.      * @return 
  200.      */  
  201.     public static JsonConfig configJson(String datePattern) {  
  202.   
  203.         JsonConfig jsonConfig = new JsonConfig();  
  204.         jsonConfig.setExcludes(new String[] { "" });  
  205.         jsonConfig.setIgnoreDefaultExcludes(false);  
  206.         jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);  
  207.         jsonConfig.registerJsonValueProcessor(Date.class,new DateJsonValueProcessor(datePattern));  
  208.         return jsonConfig;  
  209.     }  
  210.   
  211.     /** 
  212.      * @param excludes 
  213.      * @param datePattern 
  214.      * @return 
  215.      */  
  216.     public static JsonConfig configJson(String[] excludes,String datePattern) {  
  217.   
  218.         JsonConfig jsonConfig = new JsonConfig();  
  219.         jsonConfig.setExcludes(excludes);  
  220.         jsonConfig.setIgnoreDefaultExcludes(false);  
  221.         jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);  
  222.         jsonConfig.registerJsonValueProcessor(Date.class,new DateJsonValueProcessor(datePattern));  
  223.         return jsonConfig;  
  224.     }  
  225.       
  226.     /** 
  227.      * @param args 
  228.      */  
  229.     public static void main(String[] args) {  
  230.         Object obj01 = getObject4JsonString("{'name':'bijian','age':'30','phone':'13899998888'}", TestObject.class);  
  231.         System.out.println(obj01);  
  232.           
  233.         Object[] obj = getObjectArray4Json("['json','is','easy']");  
  234.         for(Object o: obj) {  
  235.             System.out.println(o);  
  236.         }  
  237.           
  238.         Map map = getMap4Json("{'json':'001','is':'002','easy':'003'}");  
  239.         System.out.println(map);  
  240.     }  
  241. }  

DateUtil.java

Java代码  收藏代码
  1. package com.bijian.json.study;  
  2.   
  3. import java.text.ParseException;  
  4. import java.text.SimpleDateFormat;  
  5. import java.util.Date;  
  6.   
  7. public class DateUtil {  
  8.   
  9.     public static Date stringToDate(String dateString, String dataFormat) {  
  10.   
  11.         SimpleDateFormat sdf = new SimpleDateFormat(dataFormat);  
  12.         Date date = null;  
  13.         try {  
  14.             date = sdf.parse(dateString);  
  15.         } catch (ParseException e) {  
  16.             e.printStackTrace();  
  17.         }  
  18.         return date;  
  19.     }  
  20. }  

DateJsonValueProcessor.java

Java代码  收藏代码
  1. package com.bijian.json.study;  
  2.   
  3. import java.text.DateFormat;  
  4. import java.text.SimpleDateFormat;  
  5. import java.util.Date;  
  6.   
  7. import net.sf.json.JsonConfig;  
  8. import net.sf.json.processors.JsonValueProcessor;  
  9.   
  10. public class DateJsonValueProcessor implements JsonValueProcessor {  
  11.   
  12.     public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";  
  13.   
  14.     private DateFormat dateFormat;  
  15.   
  16.     /** 
  17.      * 构造方法. 
  18.      *  
  19.      * @param datePattern 
  20.      *            日期格式 
  21.      */  
  22.     public DateJsonValueProcessor(String datePattern) {  
  23.   
  24.         if (null == datePattern) {  
  25.             dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);  
  26.         }else {  
  27.             dateFormat = new SimpleDateFormat(datePattern);  
  28.         }  
  29.     }  
  30.   
  31.     /* 
  32.      * (非 Javadoc) 
  33.      *  
  34.      * @see net.sf.json.processors.JsonValueProcessor#processArrayValue(java. 
  35.      * lang.Object, net.sf.json.JsonConfig) 
  36.      */  
  37.     public Object processArrayValue(Object arg0, JsonConfig arg1) {  
  38.   
  39.         // TODO 自动生成方法存根  
  40.         return process(arg0);  
  41.     }  
  42.   
  43.     /* 
  44.      * (非 Javadoc) 
  45.      *  
  46.      * @see net.sf.json.processors.JsonValueProcessor#processObjectValue(java 
  47.      * .lang.String, java.lang.Object, net.sf.json.JsonConfig) 
  48.      */  
  49.     public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {  
  50.         return process(arg1);  
  51.     }  
  52.   
  53.     private Object process(Object value) {  
  54.         return dateFormat.format((Date) value);  
  55.     }  
  56. }  

TestObject.java

Java代码  收藏代码
  1. package com.bijian.json.study;  
  2.   
  3. public class TestObject {  
  4.   
  5.     private String name;  
  6.     private int age;  
  7.     private String phone;  
  8.       
  9.     public String getName() {  
  10.         return name;  
  11.     }  
  12.     public void setName(String name) {  
  13.         this.name = name;  
  14.     }  
  15.     public int getAge() {  
  16.         return age;  
  17.     }  
  18.     public void setAge(int age) {  
  19.         this.age = age;  
  20.     }  
  21.     public String getPhone() {  
  22.         return phone;  
  23.     }  
  24.     public void setPhone(String phone) {  
  25.         this.phone = phone;  
  26.     }  
  27. }  

JSONUtil.java中的main方法运行结果:

Text代码  收藏代码
  1. com.bijian.json.study.TestObject@56f631  
  2. json  
  3. is  
  4. easy  
  5. {is=002, easy=003, json=001}  

 

0 0