zoukankan      html  css  js  c++  java
  • 使用 net.sf.json.JSONObject;进行JSONObject、JSONArray、Map、JavaBean的相互转换

    1,JSONObject

      json对象,就是一个键对应一个值,使用的是大括号{ },如:{key:value}

    2,JSONArray

      json数组,使用中括号[ ],只不过数组里面的项也是json键值对格式的

      Json对象中添加的是键值对,JSONArray中添加的是Json对象

     1 import net.sf.json.JSONArray;
     2 import net.sf.json.JSONObject;
     3 import org.junit.Test;
     4 
     5 import java.util.ArrayList;
     6 import java.util.HashMap;
     7 import java.util.Iterator;
     8 
     9 public class JsonTest {
    10 
    11     public static void main(String[] args) {
    12         //----------------JsonObject创建的方法-----------------------------------------------------------
    13         //创建JsonObject第一种方法
    14         JSONObject jsonObject = new JSONObject();
    15         jsonObject.put("UserName", "kobi");
    16         jsonObject.put("age", "34");
    17         jsonObject.put("workIn", "ALI");//此处的"ALI"也可以替换为一个json{"sex":"男","station":"徐州","hoobey":"coding"}
    18         // System.out.println("jsonObject1:" + jsonObject);//jsonObject1:{"UserName":"kobi","workIn":"ALI","age":"34"}
    19         Iterator iterator = jsonObject.keys();//用Iterator迭代器遍历取值,建议用反射机制解析到封装好的对象中
    20         while (iterator.hasNext()) {
    21             String key = (String) iterator.next();
    22             String value = jsonObject.getString(key);
    23             System.out.println(value);//输出值   kobi ALI 34
    24         }
    25         //创建JsonObject第二种方法
    26         HashMap<String, String> hashMap = new HashMap<String, String>();
    27         hashMap.put("UserName", "ZHULI");
    28         hashMap.put("age", "30");
    29         hashMap.put("workIn", "ALI");
    30         // System.out.println("jsonObject2:" + JSONObject.fromObject(hashMap));//jsonObject2:{"UserName":"ZHULI","workIn":"ALI","age":"30"}
    31 
    32 
    33         //----------------JSONArray创建的方法-----------------------------------------------------------
    34         //一:遍历JsonArray
    35         String str = "[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'},{name:'d',value:'dd'}]";  // 一个未转化的字符串
    36         JSONArray json = JSONArray.fromObject(str); // 首先把字符串转成 JSONArray  对象
    37         if (json.length() > 0) {
    38             for (int i = 0; i < json.length(); i++) {
    39                 JSONObject job = json.getJSONObject(i);  // 遍历 jsonarray 数组,把每一个对象转成 json 对象
    40                 // System.out.println(job);//{"name":"a","value":"aa"}  {"name":"b","value":"bb"} {"name":"c","value":"cc"}.....
    41                 //  System.out.println(job.get("name"));  // a b c d
    42 
    43             }
    44         }
    45 
    46         //创建JsonArray方法2
    47         ArrayList<String> arrayList = new ArrayList<String>();
    48         arrayList.add("kobi");
    49         arrayList.add("34");
    50         arrayList.add("ALI");
    51         //System.out.println("jsonArray2:" + JSONArray.fromObject(arrayList));//jsonArray2:["kobi","34","ALI"]
    52 
    53 
    54     }
    55 
    56     @Test
    57     public void test0105() {
    58         /*
    59 取出name4值过程步骤:  1.将以上字符串转成JSONArray对象  2.取出对象的第一项,JSONObject 3.取出name1的值JSONObject
    60                       4.然后取出name2的值JSONObject对象  5.取出name4的值value2
    61 * */
    62         /*  记住":"前是键,符号后是值  大括号成对找  一层层拨开就清楚了*/
    63         String str = "[{name1:{name2:{name3:'value1',name4:'value2'}}},{}]";
    64 
    65         JSONArray jsonArray = JSONArray.fromObject(str);//  将结果转成JSONArray对象的形式
    66 
    67         JSONObject getJsonObj = jsonArray.getJSONObject(0);//获取json数组中的第一项
    68 
    69         JSONObject json = getJsonObj.getJSONObject("name1").getJSONObject("name2");//{"name4":"value2","name3":"value1"}
    70         Object value = json.get("name4");
    71         System.out.println(value);//value2
    72     }
    73 
    74     @Test
    75     public void test01051() {
    76         JSONObject json = new JSONObject();
    77         JSONArray jsonArray = new JSONArray();
    78 
    79         json.put("key", "value");//JSONObject对象中添加键值对
    80         jsonArray.put(json);//将JSONObject对象添加到Json数组中
    81 
    82 
    83         System.out.println(json);
    84         System.out.println(jsonArray);
    85     }
    86 
    87 }

    相互转换的方法如下,可以运用到日常的工作中去:

      1 package com.suning.crawler.util;
      2 
      3 import net.sf.json.JSONObject;
      4 import sun.security.util.Password;
      5 
      6 import java.lang.reflect.Method;
      7 import java.text.ParseException;
      8 import java.util.HashMap;
      9 import java.util.Iterator;
     10 import java.util.Map;
     11 
     12 /**
     13  * @Author: hoobey
     14  * @Description:
     15  * @Date: Created in 9:12 2018/1/6
     16  * @Modified By:
     17  * *转换器
     18  * 1:将JavaBean 转换成Map、JSONObject
     19  * 2:将JSONObject 转换成Map
     20  */
     21 public class BeanConverter {
     22     /**
     23      * 将javaBean转换成Map
     24      *
     25      * @param javaBean javaBean
     26      * @return Map对象
     27      */
     28     public static Map<String, String> BeantoMap(Object javaBean) {
     29         Map<String, String> result = new HashMap<String, String>();
     30         Method[] methods = javaBean.getClass().getDeclaredMethods();
     31 
     32         for (Method method : methods) {
     33             try {
     34                 if (method.getName().startsWith("get")) {
     35                     String field = method.getName();//getName  getPassword
     36                     field = field.substring(field.indexOf("get") + 3);//Name  Password
     37                     field = field.toLowerCase().charAt(0) + field.substring(1);//name password
     38                     Object value = method.invoke(javaBean, (Object[]) null);
     39                     result.put(field, null == value ? "" : value.toString());
     40                 }
     41             } catch (Exception e) {
     42             }
     43         }
     44 
     45         return result;
     46     }
     47 
     48     /**
     49      * 将json对象转换成Map
     50      *
     51      * @param jsonObject json对象
     52      * @return Map对象
     53      */
     54     @SuppressWarnings("unchecked")
     55     public static Map<String, String> JsontoMap(JSONObject jsonObject) {
     56         Map<String, String> result = new HashMap<String, String>();
     57         Iterator<String> iterator = jsonObject.keys();
     58         String key = null;
     59         String value = null;
     60         while (iterator.hasNext()) {
     61             key = iterator.next();
     62             value = jsonObject.getString(key);
     63             result.put(key, value);
     64         }
     65         return result;
     66     }
     67 
     68     /**
     69      * 将javaBean转换成JSONObject
     70      *
     71      * @param bean javaBean
     72      * @return json对象
     73      */
     74     public static JSONObject toJSON(Object bean) {
     75         return new JSONObject(BeantoMap(bean));
     76     }
     77 
     78     /**
     79      * 将map转换成Javabean
     80      *
     81      * @param javabean javaBean
     82      * @param data     map数据
     83      */
     84     public static Object toJavaBean(Object javabean, Map<String, String> data) {
     85         Method[] methods = javabean.getClass().getDeclaredMethods();
     86         for (Method method : methods) {
     87             try {
     88                 if (method.getName().startsWith("set")) {
     89                     String field = method.getName(); //setName   setPassword
     90                     field = field.substring(field.indexOf("set") + 3);//Name  Password
     91                     field = field.toLowerCase().charAt(0) + field.substring(1);//name  password
     92                     method.invoke(javabean, new Object[]
     93                             {
     94                                     data.get(field)
     95                             });
     96                 }
     97             } catch (Exception e) {
     98                 e.printStackTrace();
     99             }
    100         }
    101 
    102         return javabean;
    103     }
    104 
    105     /**
    106      * 将javaBean转换成JSONObject
    107      *
    108      * @param data javaBean
    109      * @return json对象
    110      * @throws ParseException json解析异常
    111      */
    112     public static void toJavaBean(Object javabean, String data) throws ParseException {
    113         JSONObject jsonObject = new JSONObject(data);
    114         Map<String, String> datas = BeantoMap(jsonObject);
    115         toJavaBean(javabean, datas);
    116     }
    117 }

    方法调用:

     1 package com.suning.crawler.util;
     2 import net.sf.json.JSONObject;
     3 import org.junit.Test;
     4 
     5 import java.util.HashMap;
     6 import java.util.Map;
     7 import java.util.Set;
     8 
     9 /**
    10  * @Author: hoobey
    11  * @Description:
    12  * @Date: Created in 9:16 2018/1/6
    13  * @Modified By:
    14  */
    15 public class Test0106 {
    16     /*javaBean转换成Map*/
    17     @Test
    18     public void test1(){
    19         Map<String, String> map = BeanConverter.BeantoMap(new Stu("hoobey","123"));
    20        // Map<String, String> map = BeanConverter.toMap(new Stu("hoobey", "213"));
    21       //  Set<Map.Entry<String, String>> entry = map.entrySet(); //Set集合中存储的是Map.Entry<String, String> entry
    22         //推荐使用这种map遍历 尤其是容量大的时候  map.entrySet()返回此映射中包含的映射关系的 Set视图
    23         for(Map.Entry<String, String> entry : map.entrySet()){
    24             System.out.println("key="+entry.getKey()+",value="+entry.getValue());
    25         }
    26     }
    27 
    28     /*  * 将json对象转换成Map*/
    29     @Test
    30     public void test2(){
    31 
    32         JSONObject json =new JSONObject();
    33         json.put("hoobey","123");          //{"hoobey":"123"}
    34         Map<String, String> toMap = BeanConverter.JsontoMap(json);
    35         for(Map.Entry<String, String> entry : toMap.entrySet()){
    36             System.out.println("key="+entry.getKey()+",value="+entry.getValue());
    37         }
    38     }
    39 
    40     /*将javaBean转换成JSONObject*/
    41     @Test
    42     public void test3(){
    43         JSONObject toJSON = BeanConverter.toJSON(new Stu("hoobey", "123"));
    44         System.out.println(toJSON);//{"password":"123","name":"hoobey"}
    45     }
    46 
    47     /*将map转换成Javabean   map中存放的键值一定和bean相对应*/
    48     @Test
    49     public void test4(){
    50         Map<String, String> map = new HashMap<String, String>();
    51         map.put("name","hoobey");
    52         map.put("password","123");
    53         Object o = BeanConverter.toJavaBean(new Stu(), map);
    54         System.out.println(o);//Stu{name='hoobey', password='123'}
    55     }
    56 }

    这个写的很详细,转载自:https://www.cnblogs.com/hoobey/p/8213670.html

  • 相关阅读:
    1 . CentOS 7的yum更换为国内的阿里云yum源
    0. vagrant+vbox创建centos7虚拟机
    git上传到码云和下载到本地
    spring boot udp或者tcp接收数据
    你好,博客园
    使用firdder抓取APP的包
    初见loadrunner
    sublime快捷键大全
    html中行内元素与块级元素的区别。
    html.css溢出
  • 原文地址:https://www.cnblogs.com/wangquanyi/p/11329109.html
Copyright © 2011-2022 走看看