zoukankan      html  css  js  c++  java
  • java JSON

    迁移时间--2017年5月27日08:16:43

    五、java数据类型之JOSN 

      需要导入jar包

      UpdateTime--2017年9月5日17:30:10

      使用JSON数据格式,共有4种方式,这里介绍常用的两种方式及用法

      第一种方式:

      commons-beanutils-1.8.3.jar、commons-collections-3.2.1.jar、commons-lang-2.6.jar、commons-logging-1.1.3.jar、ezmorph-1.0.6.jar和json-lib-2.4-jdk15.jar

      java类需要导入:

    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    import net.sf.json.JsonConfig; 

      第二种方式:

      json-20160810.jar

      java类需要导入:

    import org.json.JSONArray;
    import org.json.JSONObject;

      (一)数据格式

      格式:{"key":value,"key:value,...}

    {"operation":"测试","errormsg":"","msg":"操作成功!"} 

      (二)初始化

      (三)常用操作

        5.3.1 增、改、删

    // 添加指定元素(添加)
    json.put("key", value);
    // 修改指定元素(修改)
    json.put("key", value2);
    // 移除掉指定元素(删除)
    json.remove("key");
    // 获取指定元素(取值)
    json.get("key");

      (四)其它用法

      (五)格式转换

        5.5.1 Bean(javaBean)转换成JSONObject(javaBean-->JSONObject)

    JSONObject jsonObject =JSONObject.fromObject(new JsonBean());

        5.5.2 json数组形式的字符串转换成JSONArray(json数组形式的字符串-->JSONArray)

    JSONArray jsonArray3 =JSONArray.fromObject("['json','is','easy']" );   

        UpdateTime--2016年12月26日14:16:24

        5.5.3 JSONObject转换成Map(JSONObject-->Map)

        5.5.4 Map转JSONObject(Map-->JSONObject)

        5.5.5 JSONArray转换成List(JSONArray-->List)  

        使用第一种方式

    // 将JSONArray转换成List
    List<Map<String, Object>> transferList = JSONArray.toList(ja, new HashMap<String, Object>(), new JsonConfig());

        使用第二种方式 

    // 将JSONArray转换成List
    List<Object> transferList = ja.toList(); 

        5.5.6 List转JSONArray(List-->JSONArray)

        使用第一种方式

    // 将List转换成JSONArray
    JSONArray ja = JSONArray.fromObject(listMapData);

        使用第二种方式 

    // 将List转换成JSONArray
    JSONArray ja = new JSONArray(listMapData); 

        举例:

        JSONObject与Map间的相互转化及JSONArray与List间的相互转化

        使用第一种方式实现

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    import net.sf.json.JsonConfig; 
    // 声明一个Map对象并指定其大小
    Map<String, Object> mapData = new HashMap<String, Object>(3);
    mapData.put("msg", "操作成功!");
    mapData.put("errormsg", "");
    mapData.put("operation", "测试");
    // 将Map转换成JSONObject
    JSONObject jo = new JSONObject(mapData);
    System.out.println(jo);// {"operation":"测试","errormsg":"","msg":"操作成功!"}
    // JSONObject转Map
    Map<String, Object> transferMap = jo.toMap();
    System.out.println(transferMap);// {operation=测试, errormsg=, msg=操作成功!}
    
    List<Map<String, Object>> listMapData = new ArrayList<Map<String, Object>>();
    listMapData.add(mapData);
    System.out.println(listMapData.toString());// [{operation=测试, msg=操作成功!, errormsg=}]
    // 将List转换成JSONArray
    JSONArray ja = new JSONArray(listMapData);
    System.out.println(ja);// [{"operation":"测试","errormsg":"","msg":"操作成功!"}]
    // 将JSONArray转换成List
    List<Object> transferList = ja.toList();
    System.out.println(transferList);// [{operation=测试, errormsg=, msg=操作成功!}]

        使用第二种方式实现

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import org.json.JSONArray;
    import org.json.JSONObject;
    Map<String, Object> mapData = new HashMap<String, Object>(3);
    mapData.put("msg", "操作成功!");
    mapData.put("errormsg", "");
    mapData.put("operation", "测试");
    // 将Map转换成JSONObject
    JSONObject jo = JSONObject.fromObject(mapData);
    System.out.println(jo);// {"operation":"测试","errormsg":"","msg":"操作成功!"}
    // JSONObject转Map:没有现成的方法,需要自己封装
    Map<String, Object> transferMap = josn2Map(jo);
    System.out.println(transferMap);// {operation=测试, errormsg=, msg=操作成功!}
    
    List<Map<String, Object>> listMapData = new ArrayList<Map<String, Object>>();
    listMapData.add(mapData);
    System.out.println(listMapData.toString());// [{operation=测试, msg=操作成功!, errormsg=}]
    // 将List转换成JSONArray
    JSONArray ja = JSONArray.fromObject(listMapData);
    System.out.println(ja);// [{"operation":"测试","errormsg":"","msg":"操作成功!"}]
    // 将JSONArray转换成List
    List<Map<String, Object>> transferList = JSONArray.toList(ja, new HashMap<String, Object>(), new JsonConfig());
    System.out.println(transferList);// [{operation=测试, errormsg=, msg=操作成功!}] 

        5.3.6 JSONObject转换成String(JSONObject-->String) 

    String resultData= jsonObject.toString();// {"operation":"测试","errormsg":"","msg":"操作成功!"} 

        说明:

          a.虽然从输入结果看不出变化,但是实际上已经将JSON对象转换成了json字符串;

          b.当数据传输的格式不支持json传输时,可以考虑将其转化成字符串。 

        5.3.7 json转换成指定格式的字符串

    /**
     * 将JSONObject转换成字符串
     * @description 转换格式:字段名+"|"+字段值+"$"
     * @param jsonObject
     *            json对象
     * @return 字符串
     */
    private String JSONObjectToString(JSONObject jsonObject) {
        String str = "";
        Iterator iterator = jsonObject.entrySet().iterator();
        if (iterator.hasNext()) {
            Entry<String, Object> entry = (Entry<String, Object>) iterator.next();
            str += entry.getKey() + "|" + entry.getValue() + "$";
        }
        return str;
    }

        格式转换出现的问题:
          Map转换成String后,不能够直接转成JSON对象
        举例:

    String cookieMapStr = "{userPassword=ABCD_XYHYXKJ, userId=1, ForganizeName=%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD, userName=%E8%B6%85%E7%BA%A7%E7%AE%A1%E7%90%86%E5%91%98}";

        由Map转换成String后,不能够直接转成JSON对象,否则会报错

    JSONObject jsonCookie = JSONObject.fromObject(cookieMapStr);//这种方式是不对的

      (六) 进一步封装

      (七)功能实现

  • 相关阅读:
    Java变量在内存中的存储
    Java成员变量和局部变量
    Java类的定义与类的实例化
    面向对象编程思想
    Java数组深入
    Java的Arrays类 基本用法
    Intellij IDEA如何设置快速调整字体大小的快捷键
    Win10如何快速截屏
    应用层协议原理(二)
    应用层协议原理(一)
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/6650636.html
Copyright © 2011-2022 走看看