迁移时间--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);//这种方式是不对的
(六) 进一步封装
(七)功能实现