首页 > 代码库 > 数据格式汇总2-java

数据格式汇总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 =http://www.mamicode.com/ (String)jsonObject.get(key);        data.put(key,value);    }    return data;}

8.Map与jsonObject通用方法

//移除掉指定元素transfromMap.remove("key");//添加指定元素transfromMap.put("key", value);//清空MaptransfromMap.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转Longlong 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 =http://www.mamicode.com/ 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 =http://www.mamicode.com/ 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