java JSON

it2025-05-06  8

迁移时间--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 json与map互相转换(一)java json与map互相转换(二)

 

 

转载于:https://www.cnblogs.com/Marydon20170307/p/6650636.html

最新回复(0)