数据格式汇总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];
        }
    }
}
时间: 2024-08-03 06:37:55

数据格式汇总2-java的相关文章

数据格式汇总-js

CreateTime--2016年10月12日09:28:09Author:Marydon数据格式汇总一.数据格式介绍标准的json格式--{"键":值,"键":值,"键":值}(值可以是数字,不加双引号:也可以是字符串,需加双引号:值也可以包含一个对象) 格式一:值存储的是多个对象 {"data":[{"TERM":"第一期","WANGWU":199,"

Redis资料汇总(十) java client

redis主页上列出的java 客户端有JDBC-Redis JRedis Jedis三种,下面分别介绍三种客户端的优缺点及其他相关的工具. 支持redis版本 性能 维护 推荐 JDBC-Redis   not good     JRedis 1.2.n release 2.0.0 尚未release版本 fast     Jedis 2.0.0 release fast actively developed 推荐 JDBC-Redis JDBC-Redis is just a JDBC wr

文本文档中各字母出现次数汇总(java)

1 package 字母频率统计; 2 import java.io.*; 3 public class Inputfile { 4 public static void main(String args[]) { 5 try { 6 char shu[] = new char[1000]; 7 char zimu[] = new char[52]; 8 int j=0; 9 int count[]=new int[52]; 10 String pathname="D:\\a.txt"

CCF签到汇总(JAVA版本,2013-12~2018-12)

CCF签到题,没有提到分数的题目都是100分,不然会额外提出,样例输入都单独文本复制粘贴了,这样你们测试的时候很方便粘贴用例,不用自己手敲,都是一些签到题.但有好的基础,会多的数据结构,好的数学思想,那么这些都是一些很简单的问题.因为java版本不多,所以仅供参考,以下代码的思路都很简单,很多都直接通过题目面向过程,有更好的想法,或者你我有些题没有满分的改进方式都可以交流. CCF300分的线,1.2题需要拿满,最低也要190,第三题是理解题,很多时候考你的语文能力更多,第四题是规律性更强的题,

Java最全文件操作实例汇总

本文实例汇总了Java文件操作.分享给大家供大家参考,具体如下: 1.创建文件夹 ? 1 2 3 4 5 6 7 8 9 10 11 //import java.io.*; File myFolderPath = new File(%%1); try { if (!myFolderPath.exists()) { myFolderPath.mkdir(); } } catch (Exception e) { System.out.println("新建目录操作出错"); e.print

java中的数据结构总结

Java的类库实在是很多,以至于很多人都不太了解,结果总是自己造轮子. 下面汇总了Java中的一些数据结构,加上一些实现的分析,同时备忘. 至于时间复杂度,个人觉得写出来的用处不大.如果明白它是怎么实现的,那自然就知道它的时间复杂度. 如果不理解它的实现,把时间复杂度背得再熟也没用. 接口: Collection<E> 子接口: BlockingDeque<E>, BlockingQueue<E>, Deque<E>, List<E>, Navi

(转)java 排序算法

排序算法汇总(java实现,附源代码) 整理系统的时候发现了原来写的各种算法的总结,看了一下,大吃一惊,那时候的我还如此用心,具体的算法,有的已经模糊甚至忘记了,看的时候就把内容整理出来,顺便在熟悉一下,以后需要的时候就可以直接过来摘抄了.下面是总结的几个常用的排序算法: 插入排序 快速排序 冒泡排序 堆排序 计数排序 桶排序 可能大家对插入排序,快速排序,冒泡排序比较常用,在满足需求的时候也简单一些,下面逐一说一下每个算法的实现方式,不保证是写的最有效率的,但是能保证的是,各种算法的中心思想是

62.JAVA编程思想——线程堵塞

62.JAVA编程思想--线程堵塞 一个线程可以有四种状态: (1) 新(New):线程对象已经创建,但尚未启动,所以不可运行. (2) 可运行(Runnable ):意味着一旦时间分片机制有空闲的CPU 周期提供给一个线程,那个线程便可立即开始运行.因此,线程可能在.也可能不在运行当中,但一旦条件许可,没有什么能阻止它的运行--它既没有"死"掉,也未被"堵塞". (3) 死(Dead):从自己的run()方法中返回后,一个线程便已"死"掉.亦可

Java程序员常用英语词汇

干程序员这行实在是离不开英语,干程序员是一项很辛苦的工作,要成为一个高水平的程序员尤为艰难.这是因为计算机软件技术更新的速度越来越快,而这些技术大多来源于英语国家,我们在引进这些技术时往往受到语言障碍的制约,严重影响到对新技术的理解和消化.首先编程本身就依赖于英语,虽然现在技术的发展,可以使得某些开发工具在变量名和字段名中支持中文,但还未发现能够完全使用中文的编程语句.     这并不代表我们英语差,就不能编程了,下面提供一点入门级的程序员常用英语,以此为开始,迈出我们学习英语的第一步,努力学习