java中json和字符串互轉及日期轉換 練習


一:以下是用到的jar名稱:

   commons-beanutils-1.6.jar

   commons-collections-3.2.1.jar

   commons-lang-2.6.jar

 commons-logging-1.1.1.jar

   ezmorph-1.0.3.jar

 json-lib-2.2.3-jdk13.jar

   json.jar

jar下載地址

  鏈接: https://pan.baidu.com/s/1c2Mkqli 密碼: 6ems

二:練習的時候用到了內部類,所以里面有一點對內部類的使用方法。其余的就是json在java中日期轉換和json和字符串之間的互轉。

  用過之后感覺就和Map是差不多的

  以下是練習源代碼

  1 package com.tang;
  2 
  3 import java.util.ArrayList;
  4 import java.util.Date;
  5 import java.util.HashMap;
  6 import java.util.List;
  7 import java.util.Map;
  8 
  9 import org.apache.commons.lang.time.DateFormatUtils;
 10 
 11 import net.sf.json.JSONArray;
 12 import net.sf.json.JSONObject;
 13 import net.sf.json.JsonConfig;
 14 import net.sf.json.processors.JsonValueProcessor;
 15 /**
 16  * json練習
 17  * @author tbb
 18  * @version 2017-4-8
 19  */
 20 public class DemoJsons {
 21     
 22     
 23     /**
 24      * json轉換為字符串
 25      */
 26     public static void doJsonToString(){
 27         //jsonObject先轉為json數組再去轉換成字符串
 28         JSONObject json = new JSONObject();
 29         
 30         //向json中添加數據
 31         json.put("username", "wangl");
 32         
 33         //往json數組添加值 第一種方法
 34 //        JSONArray jsons = JSONArray.fromObject(json);
 35         
 36         //往json數組添加值 第二種方法
 37         JSONArray jsons = new JSONArray();
 38         jsons.add(json);
 39         
 40         //數組轉換為String
 41         System.out.println(jsons.toString());
 42         //將數組中的jsonObjejct轉換為String  (可參考下面:getJsonArrayToString()方法)
 43         System.out.println(jsons.getString(0));
 44         
 45         //注如果非要轉換成jsonObject類型的字符串  
 46 //        String jsonToString1 = jsons.toString();
 47 //        String jsonToString2  = jsonToString1.substring(1, jsonToString1.length()-1);
 48 //        System.out.println(jsonToString2);
 49         
 50     }
 51     
 52     /**
 53      * map轉換為json對象
 54      */
 55     static void doMapToJson(){
 56         Map<String, Object> map = new HashMap<String, Object>();
 57         map.put("username", "zhangsan");
 58         map.put("password", "123456");
 59         
 60         //轉換為json數組
 61         JSONArray array = JSONArray.fromObject(map);
 62         System.out.println(array);
 63         
 64         //轉換為json對象
 65         JSONObject json = JSONObject.fromObject(map);
 66         System.out.println(json);
 67     }
 68     
 69     
 70     /**
 71      * jsonObject中的一些方法應用
 72      */
 73     public static void doJsonObjectHandle(){
 74         //外部類調用內部類
 75         DemoJsons.Person p = new DemoJsons().new Person();
 76         p.setUserName("zhangsan");
 77         p.setAge(19);
 78         
 79         //java對象轉換成json對象
 80         JSONObject json = JSONObject.fromObject(p);
 81         
 82         //判斷是否包含某個值   包含:true  反之:false
 83 //        System.out.println(json.containsValue(19));
 84         
 85         //判斷是否包含某個key   包含:true  反之:false
 86 //        System.out.println(json.containsKey("userName"));
 87         
 88         //替換json對象中某個屬性的值
 89 //        JSONObject json1 = json.element("userName", "lisi");
 90 //        System.out.println(json1);
 91         
 92         //根據key在value中增加值
 93 //        System.out.println(json.accumulate("age", 17));    //執行結果 : {"age":[19,17],"endTime":null,"userName":"zhangsan"}
 94         
 95         //和json.get("userName");返回值是相同點的 
 96 //        System.out.println(json.opt("userName"));
 97         
 98         //往json中增加新的key和value
 99 //        json.put("shuai", "shuai");
100         
101         //根據key  刪除key-value
102 //        json.remove("shuai");
103         System.out.println(json);
104     }
105     
106     
107     /**
108      * java對象轉換成json對象
109      */
110     public static void doObject(){
111         /**
112          * 外部類調用內部類   
113          *     1:如果內部類是public  DemoJsons.Person p = new DemoJsons().new Person();
114          *  2:如果內部類是靜態的              new DateJsonValueProcessor();
115          */
116         //外部類調用內部類
117         DemoJsons.Person p = new DemoJsons().new Person();
118         p.setUserName("zhangsan");
119         p.setAge(19);
120         DemoJsons.Person p2 = new DemoJsons().new Person();
121         p2.setUserName("lisi");
122         p2.setAge(19);
123         DemoJsons.Person p3 = new DemoJsons().new Person();
124         p3.setUserName("wangwu");
125         p3.setAge(19);
126         List<Person> ps = new ArrayList<Person>();
127         ps.add(p);
128         ps.add(p2);
129         ps.add(p3);
130         
131         //java對象轉換成json對象
132         JSONObject json = JSONObject.fromObject(p);
133         System.out.println(json);
134         
135         //java list轉換成json數組
136         JSONArray jsons = JSONArray.fromObject(ps);
137         System.out.println(jsons);
138         
139         //獲取json數組中的json對象
140         JSONObject obj = jsons.getJSONObject(2);
141         System.out.println(obj);
142         
143         //獲取json對象中的屬性值   相當與Map(key-value) 和map取值一樣
144         System.out.println(obj.getString("userName"));
145         System.out.println(obj.getInt("age"));
146     }
147     
148     
149     /**
150      * 日期轉換
151      */
152     public static void demoDate(){
153         //外部類調用內部類
154         Person p = new DemoJsons().new Person();
155         p.setAge(18);
156         p.setEndTime(new Date());
157         p.setUserName("zhangsan");
158         //日期轉換
159         JsonConfig jsonConfig = new JsonConfig();
160         
161         //第一種日期轉換   需要新建一個類DateJsonValueProcessor
162 //        jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor());
163         
164         //第二種日期轉換  
165         jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonValueProcessor() {
166             
167             @Override
168             public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {
169                 // TODO Auto-generated method stub
170                 //導包import org.apache.commons.lang.time.DateFormatUtils; jar包:commons-lang-2.6.jar
171                 return DateFormatUtils.format((Date)arg1, "yyyy-MM-dd");
172             }
173             
174             @Override
175             public Object processArrayValue(Object arg0, JsonConfig arg1) {
176                 // TODO Auto-generated method stub
177                 return null;
178             }
179         });
180         
181         JSONObject json = JSONObject.fromObject(p,jsonConfig);
182         System.out.println(json);
183     }
184     
185     /**
186      * 把json數組里的某個對象轉換為字符串
187      */
188     public static void getJsonArrayToString(){
189         String us = "[{\"userName\":\"zhangsan\"},{\"userName\":\"lisi\"}]";
190         JSONArray json = JSONArray.fromObject(us);
191         System.out.println(json.getString(0));
192     }
193     
194     /**
195      * 測試實體類
196      * @author tbb
197      *
198      */
199     public class Person{
200         
201         private String userName;
202         private Integer age;
203         private Date endTime;
204         
205         public Date getEndTime() {
206             return endTime;
207         }
208         public void setEndTime(Date endTime) {
209             this.endTime = endTime;
210         }
211         public String getUserName() {
212             return userName;
213         }
214         public void setUserName(String userName) {
215             this.userName = userName;
216         }
217         public Integer getAge() {
218             return age;
219         }
220         public void setAge(Integer age) {
221             this.age = age;
222         }
223         
224     }
225     
226     /**
227      * 日期格式化處理類
228      * @author tbb
229      *
230      */
231     public static class DateJsonValueProcessor implements JsonValueProcessor{
232          //json數組日期轉換
233         @Override
234         public Object processArrayValue(Object arg0, JsonConfig arg1) {
235             // TODO Auto-generated method stub
236             //判斷是否是Date類型
237              if (arg0 instanceof Date){  
238                     String str = DateFormatUtils.format((Date)arg0, "yyyy-MM-dd");  
239                     return str;  
240               }  
241             return null;
242         }
243         //json對象日期轉換
244         @Override
245         public Object processObjectValue(String arg0, Object arg1,
246                 JsonConfig arg2) {
247             // TODO Auto-generated method stub
248             return DateFormatUtils.format((Date)arg1, "yyyy-MM-dd");
249         }
250         
251     }
252     
253     
254     /**
255      * @param args
256      */
257     public static void main(String[] args) {
258         // TODO Auto-generated method stub
259 //        doObject();
260 //        demoDate();
261 //        doJsonToString();
262 //        doJsonObjectHandle();
263         getJsonArrayToString();
264     }
265     
266 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM