数据格式汇总2-java
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据格式汇总2-java相关的知识,希望对你有一定的参考价值。
二、数据格式间的相互转化
1. List集合转换成json代码
List list = newArrayList(); list.add( "first" ); list.add( "second" ); JSONArray jsonArray2 =JSONArray.fromObject( list );
2. Map集合转换成json代码
Map map = newHashMap(); map.put("name","json"); map.put("bool",Boolean.TRUE); map.put("int", newInteger(1)); map.put("arr", new String[] {"a", "b" }); map.put("func", "function(i){return this.arr[i]; }"); JSONObject json =JSONObject.fromObject(map);
3. Bean(javaBean)转换成json代码
JSONObject jsonObject =JSONObject.fromObject(new JsonBean());
4. 数组转换成json代码
boolean[] boolArray = newboolean[] { true, false, true }; JSONArray jsonArray1 =JSONArray.fromObject(boolArray);
5. 一般数据转换成json代码
JSONArray jsonArray3 =JSONArray.fromObject("[‘json‘,‘is‘,‘easy‘]" );
6.json转String(将json对象转换成json格式字符串)
String jsonStr = jsonObject.toString();
UpdateTime--2016年12月26日14:16:24
7.josn对象转换成Map
/** * 将JSONObject转换成Map对象 * 方法一 * @param jsonObject * @return Map */ private Map toMap(JSONObject jsonObject) { Map data = new HashMap(); Iterator it = jsonObject.keys(); // 遍历jsonObject数据,添加到Map对象 while (it.hasNext()) { String key = String.valueOf(it.next()); Object value = jsonObject.get(key); data.put(key, value); } return data; }
/** * 将JSONObject转换成Map对象 * 方法二 * @param jsonObject * @return Map */ private Map toMap(JSONObject jsonObject) { Map data = new HashMap(); Iterator it = ; // 遍历jsonObject数据,添加到Map对象 while (it.hasNext()) { String key = String.valueOf(it.next()); Object value = jsonObject.get(key); data.put(key, value); } for (Iterator it = jsonObject.keys(); it.hasNext();) { String key = (String)it.next(); //值的类型如果不确定的话,用Object接收 String value = (String)jsonObject.get(key); data.put(key,value); } return data; }
8.Map与jsonObject通用方法
//移除掉指定元素 transfromMap.remove("key"); //添加指定元素 transfromMap.put("key", value); //清空Map transfromMap.clear(); //判断Map对象是否为空 transfromMap.isEmpty();
9.将Map转换成字符串
/** * 将Map转换成字符串 */ //方法一 String mapStr = String.valueOf(map); //方法二 String mapStr = map.toString();
10. Map.toString()后字符串转换回Map
/** * Map.toString()后字符串转换回Map * @param str Map字符串 * @return Map对象 */ public static Map<String, String> mapStringToMap(String str) { str = str.substring(1, str.length() - 1); String[] strs = str.split(","); Map<String, String> map = new HashMap<>(); for (String string : strs) { String key = string.split("=")[0].trim(); String value = string.split("=")[1].trim(); map.put(key, value); } return map; }
例子:
map
{FHIGHPRICE_VILLLEVE=0, FSTATUS=1, FPROVLEVELLIMIT=1, FBEGINDATE=, FENDDATE=, FCLASSNAME=药品类, FITEMSIZE=, FHIGHPRICE_TOWNLEVEL=0, FCATALOGTYPE=, FVILLLEVELLIMIT=1, FID=400119, FCLIINHOSLIMIT=3, FHIGHPRICE_CITYLEVEL=0, FREMARK=, methodName=updateTDICTCHARGEITEM, FFORMS=, FITEMTYPE=0, FCLASSCODE=01, FGENERALCODE=, FRCODE=410000, FMEDICARE=2, FZJM=DSTN(YNS), FITEMCODE=W9999990019003y, FHIGHPRICE_COUNLEVEL=0, FDRUGTYPE=1, FITEMNAME=达沙替尼(依尼舒)(20mg×7粒), FTOWNLEVELLIMIT=1, FHIGHPRICE_PROVLEVEL=0, FCOUNLEVELLIMIT=1, FCOMPUTERATIO=1.0, FFEECODE=0101, FUNIT=, FORGLIMIT=0}
map转换成json:
jsonObject = JSONObject.fromObject(map);
json
{"FHIGHPRICE_VILLLEVE":"0","FSTATUS":"1","FPROVLEVELLIMIT":"1","FBEGINDATE":"","FENDDATE":"","FCLASSNAME":"药品类","FITEMSIZE":"","FHIGHPRICE_TOWNLEVEL":"0","FCATALOGTYPE":"","FVILLLEVELLIMIT":"1","FID":"400119","FCLIINHOSLIMIT":"3","FHIGHPRICE_CITYLEVEL":"0","FREMARK":"","methodName":"updateTDICTCHARGEITEM","FFORMS":"","FITEMTYPE":"0","FCLASSCODE":"01","FGENERALCODE":"","FRCODE":"410000","FMEDICARE":"2","FZJM":"DSTN(YNS)","FITEMCODE":"W9999990019003y","FHIGHPRICE_COUNLEVEL":"0","FDRUGTYPE":"1","FITEMNAME":"达沙替尼(依尼舒)(20mg×7粒)","FTOWNLEVELLIMIT":"1","FHIGHPRICE_PROVLEVEL":"0","FCOUNLEVELLIMIT":"1","FCOMPUTERATIO":1,"FFEECODE":"0101","FUNIT":"","FORGLIMIT":0}
json转换成String
final String MESSAGE= jsonObject.toString();
String
"{"FHIGHPRICE_VILLLEVE":"0","FSTATUS":"1","FPROVLEVELLIMIT":"1","FBEGINDATE":"","FENDDATE":"","FCLASSNAME":"药品类","FITEMSIZE":"","FHIGHPRICE_TOWNLEVEL":"0","FCATALOGTYPE":"","FVILLLEVELLIMIT":"1","FID":"400119","FCLIINHOSLIMIT":"3","FHIGHPRICE_CITYLEVEL":"0","FREMARK":"","methodName":"updateTDICTCHARGEITEM","FFORMS":"","FITEMTYPE":"0","FCLASSCODE":"01","FGENERALCODE":"","FRCODE":"410000","FMEDICARE":"2","FZJM":"DSTN(YNS)","FITEMCODE":"W9999990019003y","FHIGHPRICE_COUNLEVEL":"0","FDRUGTYPE":"1","FITEMNAME":"达沙替尼(依尼舒)(20mg×7粒)","FTOWNLEVELLIMIT":"1","FHIGHPRICE_PROVLEVEL":"0","FCOUNLEVELLIMIT":"1","FCOMPUTERATIO":1,"FFEECODE":"0101","FUNIT":"","FORGLIMIT":0}"
UpdateTime--2017年1月9日17:31:14
java基本数据类型、封装类间的相互转化
1.String 与 int的相互转化
/** * 将String类型的数字转换成int类型 */ int r1 = Integer.parseInt("123");
/** * int转String */ //使用String类的valueOf()方法 String str1 = String.valueOf(3); //使用Integer类的toString()方法 String str2 = Integer.toString(3); //拼接空字符 String str3 = 3 + "";
2.String 与 Integer的相互转化
/** * 将String类型的数字转换成Integer类型 */ Integer r2 = Integer.valueOf("123");
/** * Integer转String */ Integer r = 1; String str4 = r.toString();
3.int 与 Integer的相互转化
/** * 将int类型的数字转换成Integer类型的三种方式 */ //调用Integer的valueOf()方法 Integer r3 = Integer.valueOf(123); //自动转换 Integer r4 = 123; //实例化Integer对象 Integer r5 = new Integer(123);
/** * Integer转int的两种方式 */ //自动转换 int r5 = r2; //调用Integer类的intValue()方法 int r6 = r3.intValue();
小结:
a.八种基本数据类型与对应的封装类间可以直接进行相互转化
long l = 1; Long L = l;//long转Long long l2 = L;//Long转long
b.八种基本数据类型转换成String类型
//方法一(用这种) 调用String的valueOf()方法,String的valueOf()方法只适用于八种基本数据类型转换成String类型; String str = String.valueOf(123); //方法二 调用封装类对应的toString()方法 long l2 = 1; String str2 = Long.toString(l2);
c.八种基本数据类型的封装类转换成String类型
使用toString()方法可以转换成String类型; Long L2 = 1; String str3 = L2.toString();
d.String类型转换成八种基本数据类型
调用对应封装类的pase+“基本数据类型” long l3 = Long.parseLong("123");
e.String类型转换成八种基本数据类型的封装类
调用对应封装类的valueOf()方法
Long L3 = Long.valueOf("123");
f.封装类之间无法直接相互转换
UpdateTime--2017年2月4日15:13:41
三、数据迭代
1.迭代List集合
List<Object> list = new ArrayList<Object>(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5);
/** * 方法一:使用forEach遍历(推荐使用) * 类型、别名、数组名 */ for (Object li:list) { System.out.println(li); } /** * 使用迭代器 */ Iterator<Object> it = list.iterator(); while(it.hasNext()) { System.out.println(it.next()); }
/** * 使用迭代器方法二 */ for (Iterator<Object> ite=list.iterator();ite.hasNext();) { System.out.println(ite.next()); } /** * 使用for循环 */ System.out.println("使用for循环遍历"); for (int i=0;i<list.size();i++) { System.out.println(list.get(i)); }
2.迭代Map集合
Map<String,Object> map = new HashMap<String,Object>(); map.put("语文", 1); map.put("数学", 2); map.put("英语", 3); map.put("历史", 4); map.put("政治", 5); map.put("生物", 6); map.put("生物", 7); map.put("化学", 8);
/** * 方法1:entrySet集合迭代 */ Iterator iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Entry<String, Object> entry = iterator.next(); System.out.println(entry.getKey() + "=" + entry.getValue()); }
/** * 方法2:keySet集合迭代 */ Iterator iterator = map.keySet().iterator(); while (iterator.hasNext()) { //获取键 String key = iterator.next().toString();//或String key = (String)iterator.next(); //根据键获取值 Object value = map.get(key); System.out.println("键:"+ key + ",值:" + value); }
/** * 方法3:entrySet集合for-each循环(推荐使用) * 这种方式必须声明泛型类型: * a.bizData使用Map接收必须得声明泛型;b.for-each()里的Entry的泛型控制可有可无 * Map的泛型控制通常使用<String,Object> */ Map<String, Object> bizData = dataBus.getBizData(); for (Entry<String, Object> entry : bizData.entrySet()) { System.out.println(entry.getKey() + "=" + entry.getValue()); }
/** * 方法4:keySet集合for-each循环 */ for (String key:map.keySet()) { System.out.println(key + "=" + map.get(key)); }
//只遍历键 for (String key:map.keySet()) { System.out.println(key); } //只遍历值 for (Object val:map.values()) { System.out.println(val); }
UpdateTime:2017年2月20日19:27:45
四、格式转换示例:
/** * 将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转换成字符串 * 格式:键+"|"+值+"$" * @param map * @return */ private String MapToString(Map map) { String str = ""; Iterator iterator = map.entrySet().iterator(); while (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);//这种方式是不对的
问题二:String.split("指定字符"),指定字符如果是特殊字符串需要使用"\\"转义
String拆分字符串
举例:
String cookieStr = "userId$1|userName$%E8%B6%85%E7%BA%A7%E7%AE%A1%E7%90%86%E5%91%98|home$index|"; if (cookieStr.indexOf("userId") > -1) { String[] cooks = cookieStr.split("\\|"); for (String cook : cooks) { String[] str = cook.split("\\$");//或[$] if (str[0].equals("userId")) { return str[1]; } } }
以上是关于数据格式汇总2-java的主要内容,如果未能解决你的问题,请参考以下文章