数据格式汇总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的主要内容,如果未能解决你的问题,请参考以下文章

IDEA格式化代码技巧汇总

如何在 Javadoc 中使用 @ 和 符号格式化代码片段?

为 Blogger 上的博客格式化代码片段 [关闭]

python常用代码问题汇总

数据格式汇总-js

常见气象数据获取方式及批量下载代码汇总