最近一直在整傳輸資料的事,當然一直在用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包中的這種方法外,Google的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{
做其他處理
}