什麼是json,javaScript Object Notation 是一種javascript輕量級數據交互格式,主要應用於Ajax編程
第一次接觸到JSON是在項目中運用EXT中的Ajax和java後臺交互的數據格式,當時沒怎麼在意,因爲很簡單,用起來順手,項目也是半路接手就直接拿過來用了,也沒怎麼注意。現在想想JSON火那也正是這個東西簡單上手,而且從他的官方網站也能看的出來他很簡單但很實用。http://www.json.org/json-zh.html
JSON只用兩種數據格式
1、數組形式
[值1,值2,值3......] JSONArray
2、鍵值對形式和java中的map很像,當然他們也是可以相互轉換的
{key:123,key2:456......} JSONObject
注意的鍵值對是用“{}”,數組的是“[]”
同時上面兩種格式是可以相互嵌套的,比如:
[{name:[123,12,43],sex:[1,0,1]},{name:[123,12,43],sex:[1,0,1]}]等等的格式,在json的官網上有幾張圖,畫出了這幾種格式的狀況。
下面說說json在java中的用法,在官網上指出了運用json的有和幾種方式,比如:org.json,json-lib,JSON Tools,XStream等,我感覺差不多吧,我只用過org.json和json-lib裏面主要的方法就是JSONArray和JSONObject。他們中的方法就不細說了,官網上就有API可以去看看就明白了。不過json-lib引入的包要多一點,這個官網上說了要5個包吧
- jakarta commons-lang 2.5
- jakarta commons-beanutils 1.8.0
- jakarta commons-collections 3.2.1
- jakarta commons-logging 1.1.1
- ezmorph 1.0.6
下面簡單的寫了個例子運用一下json
@Test
public void demo1(){
// 轉換數組 到 json格式字符串
String[] arr = {"sada","fdssd","dfsd","sadas"};
JSONArray jsonArray = JSONArray.fromObject(arr);
System.out.println(jsonArray.toString());
}
@Test
public void demo2(){
// 轉換list到json
List<Product> products = new ArrayList<Product>();
Product p1 = new Product();
p1.setName("三星手機");
p1.setPrice(3999);
Product p2 = new Product();
p2.setName("聯想筆記本");
p2.setPrice(5000);
products.add(p1);
products.add(p2);
JSONArray jsonArray = JSONArray.fromObject(products);
System.out.println(jsonArray);
}
@Test
public void demo3(){
// 轉換對象 到 json
Product p1 = new Product();
p1.setName("三星手機");
p1.setPrice(3999);
JSONObject jsonObject = JSONObject.fromObject(p1);
System.out.println(jsonObject);
}
@Test
public void demo4(){
// 通過JSONConfig對象 配置對象哪些屬性不參與轉換
Product p1 = new Product();
p1.setName("三星手機");
p1.setPrice(3999);
// 不想手機 價格存在 於 結果json中
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(new String[]{"price"});
JSONObject jsonObject = JSONObject.fromObject(p1, jsonConfig);
System.out.println(jsonObject);
}
@Test
public void demo5(){
//轉換map到json
Map<String, String> map = new HashMap<String, String>();
map.put("name1", "wangwy");
map.put("name2", "shiqq");
map.put("name3", "liuj");
JSONObject json = JSONObject.fromObject(map);
System.out.println(json);
}
當然項目中我們用的比這個要複雜的多,有時候需要我們手動去拼寫json串,只要牢記json的兩種書寫格式就可以了。