zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    大厂面试系列(七):数据结构与算法等
    大厂面试系列(六):Redis和缓存等
    大厂面试系列(五):Dubbo和Spring Cloud
    大厂面试系列(四):Spring相关
    大厂面试系列(二):并发编程
    大厂面试系列(二)::NIO和Netty
    大厂面试系列(一)::JVM基础
    Plugin 'org.apache.tomcat.maven:tomcat7-maven-plugin:' not found
    Spring源码在编译过程中的几个问题
    vue.js Interpolation inside attributes has been removed.
  • 原文地址:https://www.cnblogs.com/tangbang/p/tangbang.html
Copyright © 2011-2022 走看看