java之数据转换(Java与json以及map和list的解析)

来源:互联网 发布:上网流量统计软件 编辑:程序博客网 时间:2024/05/22 13:40

最近一直在整传输数据的事,当然一直在用json格式传递,自然就免不了数据之间格式的转化,包括json转java的bean对象,封装解析map、list等。今天就大概记录一下这些方法,留待以后使用。
一、json
1.将json转化为java对象
json串为:

String s ={"id":"1","name":"shanxi","librays":[{"libraryid":"1","libraryName":"centralLibray","bookCount":"10021"}]}; 

声明实体类

public class City {    private int id;    private String name;    private List<Library> librays;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public List<Library> getLibrays() {        return librays;    }    public void setLibrays(List<Library> librays) {        this.librays = librays;    }}
public class Library {    private int libraryid;    private String libraryName;     private String bookCount;    public int getLibraryid() {        return libraryid;    }    public String getBookCount() {        return bookCount;    }    public void setBookCount(String bookCount) {        this.bookCount = bookCount;    }    public void setLibraryid(int libraryid) {        this.libraryid = libraryid;    }    public String getLibraryName() {        return libraryName;    }    public void setLibraryName(String libraryName) {        this.libraryName = libraryName;    }}

实现:这个有两步,一步是将嵌套的json(即子实体类封装到classMap中),第二步则是加个json转化为javabean对象。

Map<String,Class> classMap = new HashMap<String,Class>();        classMap.put("librays", Library.class);        JSONObject obj = new JSONObject().fromObject(s);        City city = JSONObject.toBean(obj,City.class,classMap);

除了json-lib-2.2-jdk15.jar包中的这种方法外,谷歌的gson也非常灵活的处理这种问题
另外,还有jsonObject的一些基本方法:
如:

//将json数组形式的字符串转化为jsonArray对象JSONArray arr= JSONArray.fromObject(s);//将json形式的字符串转化为json对象JSONObject json = JSONObject.fromObject(s);//将json对象转化为字符串json.toString();/arr.toString//获取JSONArray的第n个jsonObject对象arr.getJSONObject(n);//获取JSON对象的某一个值arr.getJSONObject(n).getString(key);

2.遍历json对象

//遍历json字符串(json对象)JSONObject jsonObject = new JSONObject();jsonObject = jsonObject.fromObject(s);Iterator iterator = jsonObject.keys();while(iterator.hasNext()){    key = (String) iterator.next();    value1 = jsonObject.getString(key);         }

3.遍历json数组
只不过在遍历jsonObject外面套一个for循环就OK
4.另外,
注意java定义的结构化的对象,如map、json对象或数组等不能令其等于null,令其为null后就不是该结构的对象了,因此不能再进行该结构的一些操作了;
可以为new对象,如new JSONArray(),会把该json数组置为空。
二、map
1.遍历map
方法一:

List<HashMap> rlnList = new ArrayList<HashMap>();Map<String,String> map =rlnList.get(i);for(Map.Entry<String, String> entryParam :map.entrySet()){System.out.println("key="+entryParam.getKey()+",value="+entryParam.getValue());}

方法二:
不知道map中键值对的类型可用这种方法

Map mapc = entry.getValue().get(i);Iterator iter = mapc.entrySet().iterator(); while(iter.hasNext()){    Map.Entry entryc = (Entry) iter.next();    System.out.println("key="+entryc.getKey()+",value="+entryc.getValue());}

2.合并两个map

for(int i =0;i<map2.size();i++){map1.add(map2.get(i));}

3.定义map

Map map = new HashMap();map.put("key1","value1");map.put("key2","value2");

4.获取map的值

map.get("key1");

5.判断map是否为空
(map.size=0与map.isEmpty()差不多)

if(map!=null && !map.isEmpty()){这个里面取list中的值}else{做其他处理}

三、list
1.遍历list

List list = new ArrayList();list.get(i);

2.定义list

list.add(i,"value");

3.修改list

list.set(i,"value");

4.判断list是否为空
if(list!=null && !list.isEmpty()){
这个里面取list中的值
}else{
做其他处理
}

0 0