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 }

 

posted @ 2017-04-08 15:55  棒棒博客  阅读(15480)  评论(0编辑  收藏  举报