java中json、list、map、对象、reslutSet、XML的相互转换

这段时间,一直在拼凑json,解析json存入数据库,弄的我是晕头转向,感觉我可怜的头发又少了500根,自己整理了一套思路,分享一下。

首先要搞明白格式,json其实是一种前台的格式与概念,比较灵活,到了后台可以是对象可以是数组可以是list可以是map。

list对应 jsonArray ,map 对应 JSONobject

再详细一点那就是

[]数组--list---JSONArray ,Object--Map---JSONObject ,

1、先说map,格式比较好统一{}在最外侧,{"key值":value}或者是{key值=value}

String jsonString = "{\"key\":\"value\"}"
JSONObject  myJson = JSONObject.fromObject(jsonString);
Map m = myJson; 

这是网上最常见的一种转map的方法,json的格式这里也是与map一样的,但是这样的写法有的时候会不行,比如value是个数组的时候,会报错,我也不知道为什么,我发现了一种更霸道的方式,可以对这样的格式转换,引包的时候是引的goole的

import com.google.gson.Gson;
String mapData ="{" +
            "'bank': [{" +
            "'name': 'xxxxx'," +
            "'address': 'xxxxx'," +
            "'content': 'xxxxx'" +
          "}]" +
      "}";
Gson gson = new Gson();
Map<String, Object> map = new HashMap<String, Object>();
map = gson.fromJson(mapData, map.getClass());

2、我们再说list,是以[]开始的,里面可以是任何的值,比如[{map1},{map2},{map3}]

当是这样比较简单的结构时,我们就可以直接转换

String json = "[{a},[b},{c}]";    
JSONArray jsonArray = JSONArray.fromObject(json);
List<String> list = (List) JSONArray.toCollection(jsonArray);

但是这样转不是万能的,比如遇到这样的格式['key1':[vlaue],'key2':[value]],我确实是就报错了,于是乎,找到了第二种霸道的方法

Object[] obj= JSON.parseObject(jsonData, new TypeReference<Object[]>(){});
List list = Arrays.asList(obj);

目前遇到的所有的json、list、map之间的转换,通过上面的这些就可以完成转换。下面贴上我遇到的所有的其他类型的转换

//list对象转JSON
public  JSONArray List2Json(List<Object> list){
    JSONArray json = JSONArray.fromObject(list);
}

//JSON(数组)字符串转换成XML字符串
public String json2xml(JSONArray json) {
    String xml = new XMLSerializer().write(json);
}

//XML转JSON
public JSON  xml2json(String xml) {
    JSON json = new XMLSerializer().read(xml);
}

//JSON转LIST
public List json2list(JSON json) {
    JSONArray jsonArray = JSONArray.fromObject(json);
    List<String> list = (List) JSONArray.toCollection(jsonArray);
}

//将内容转json
JSON json = new XMLSerializer().read(xml);

//将json转jsonArray
JSONArray jsonArray = JSONArray.fromObject(json);

//将list中的jsonArray转成json对象再转成对应的实体对象
List<BdcDjTotalData> list = (List) JSONArray.fromObject(jsonArray.toArray());
JSONObject obj = new JSONObject().fromObject(list.get(x));
BdcDjTotalData bdcData =(BdcDjTotalData)JSONObject.toBean(obj,BdcDjTotalData.class);

//resultSet转LIST
public static List resultSetToList(ResultSet rs) throws java.sql.SQLException {
    if (rs == null)
        return Collections.EMPTY_LIST;
    ResultSetMetaData md = rs.getMetaData(); //得到结果集(rs)的结构信息,比如字段数、字段名等
    int columnCount = md.getColumnCount(); //返回此 ResultSet 对象中的列数
    List list = new ArrayList();
    Map rowData = new HashMap();
    while (rs.next()) {
        rowData = new HashMap(columnCount);
        for (int i = 1; i <= columnCount; i++) {
            rowData.put(md.getColumnName(i), rs.getObject(i));
        }
        list.add(rowData);
        System.out.println("list:" + list.toString());
    }
    return list;
}

xml的转换用到的jar包





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值