Web階段:第十九章:JSON格式
什么是JSON?
1.介紹:JSON (JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。
易于人閱讀和編寫(xiě)。同時(shí)也易于機(jī)器解析和生成。 JSON采用完全獨(dú)立于語(yǔ)言的文本格式,但是也使用了類似于C語(yǔ)言家族的習(xí)慣(包括C, C++,
C#, Java, JavaScript, Perl, Python等)。 這些特性使JSON成為理想的數(shù)據(jù)交換格式。
2.一種輕量級(jí)的數(shù)據(jù)交換格式
3.輕量級(jí)是跟xml做比較。json也可以用來(lái)保存數(shù)據(jù),并且相同的數(shù)據(jù)使用json保存會(huì)比xml保存經(jīng)小很多,而且解析速度要快很多。
客戶端使用json
服務(wù)器使用json
傳數(shù)據(jù)用json格式
Json在JavaScript中的使用。
json的定義
json是由鍵值對(duì)組成,并且由大括號(hào)包圍,每個(gè)鍵都必須加引號(hào)引起來(lái),鍵和值之間使用冒號(hào)進(jìn)行分隔。
多組鍵值對(duì)之間使用逗號(hào)進(jìn)行分隔。
json的訪問(wèn)
var 變量名 = {
“key”:值 , 值可以有很多種類型,number、string,json對(duì)象,比較數(shù)組,比較json數(shù)組
“key1”:值
};
如何訪問(wèn)json對(duì)象:
變量名.key
- <script type="text/javascript">
- // json的定義
- var jsonObj = {
- "key1" : 12, // number
- "key2" : "abc", // string
- "key3" : [33,"333",true], // 數(shù)組
- "key4" : { // json套json
- "key4_1" : 41,
- "key4_2" : "42String"
- },
- "key5" : [{
- "key5_1_1" : 511,
- "key5_1_2" : 512
- },{
- "key5_2_1" : 521,
- "key5_2_2" : 522
- }]
- };
- // json的訪問(wèn)
- // alert( jsonObj.key1 );//12
- // alert( jsonObj.key2 );//abc
- // alert( jsonObj.key3[0] );//33
- // alert( jsonObj.key4.key4_2 );//42String
- // alert( jsonObj.key5[1].key5_2_2 );//522
- // alert( jsonObj );
- // json對(duì)象轉(zhuǎn)字符串
- var jsonString = JSON.stringify( jsonObj );
- alert(jsonString);
- /* {"key1":12,"key2":"abc","key3":[33,"333",true],
- "key4":{"key4_1":41,"key4_2":"42String"},
- "key5":[{"key5_1_1":511,"key5_1_2":512},
- {"key5_2_1":521,"key5_2_2":522}]} */
- // json字符串轉(zhuǎn)json對(duì)象
- var obj = JSON.parse( jsonString );
- alert(obj.key1);
- </script>
Json的兩個(gè)常用方法
JSON.stringify() : 把json對(duì)象轉(zhuǎn)換成為json字符串
JSON.parse() : 把json字符串轉(zhuǎn)換成為json對(duì)象
Json在java中的使用
在java中使用json,需要先導(dǎo)入jar包。gson-2.2.4.jar
javaBean和json的互轉(zhuǎn)
@Test
public void test1() throws Exception {
Person person = new Person(1,"國(guó)哥很帥!");
// 是谷歌jar包提供用來(lái)操作json的工具類
Gson gson = new Gson();
// 把person對(duì)象轉(zhuǎn)換成為json字符串
String jsonString = gson.toJson(person);
System.out.println( jsonString );
// 把json字符串轉(zhuǎn)換成為javaBean對(duì)象
Person person1 = gson.fromJson(jsonString, Person.class);
System.out.println( person1 );
}
List 和json的互轉(zhuǎn)
@Test
public void test2() throws Exception {
List<Person> list = new ArrayList<Person>();
list.add(new Person(1, "哥帥一次"));
list.add(new Person(2, "哥帥二次"));
list.add(new Person(3, "哥帥三次"));
// 創(chuàng)建一個(gè)json的工具類
Gson gson = new Gson();
// 把list集合轉(zhuǎn)換成為json字符串
String listJsonString = gson.toJson(list);
System.out.println( listJsonString );
// List<Person> list2 = gson.fromJson(listJsonString, new PersonListType().getType());
List<Person> list2 = gson.fromJson(listJsonString, new
TypeToken<ArrayList<Person>>() {}.getType());
System.out.println( list2 );
Person person = list2.get(0);
System.out.println(person);
}
map 和json的互轉(zhuǎn)
@Test
public void test3() throws Exception {
Map<String, Person> map = new HashMap<String, Person>();
map.put("p1", new Person(1, "飛龍"));
map.put("p2", new Person(2, "哥很帥氣,我愛(ài)你!"));
map.put("p3", new Person(3, "哥94V587"));
Gson gson = new Gson();
// 把集合轉(zhuǎn)換json字符串
String mapJsonString = gson.toJson(map);
System.out.println( mapJsonString );
// fromJson方法,如果要返回一個(gè)javaBean對(duì)象。返回Class類型
// 如果要返回一個(gè)集合,要使用TypeToken類
Map<String, Person> map2 = gson.fromJson(mapJsonString, new
TypeToken<HashMap<String, Person>>(){}.getType());
System.out.println( map2 );
Person p = map2.get("p2");
System.out.println(p);
}
案例:
@Test
public void test() {
Person person = new Person(1,"很帥");
System.out.println("person:"+person);
Gson gson = new Gson();
String json = gson.toJson(person);//person類轉(zhuǎn)json
System.out.println("person轉(zhuǎn)json:"+json);
Person person2 = gson.fromJson(json, Person.class);//json轉(zhuǎn)Bean對(duì)象
System.out.println("json轉(zhuǎn)Person"+person2);
List<Person> list = new ArrayList<Person>();
list.add(new Person(1, "哥帥一次"));
list.add(new Person(2, "哥帥二次"));
list.add(new Person(3, "哥帥三次"));
System.out.println("list集合:"+list);
String gson2 = gson.toJson(list);//集合轉(zhuǎn)json
System.out.println("list集合轉(zhuǎn)json:"+gson2);
Map<String, Person> map = new HashMap<String, Person>();
map.put("p1", new Person(1, "龍"));
map.put("p2", new Person(2, "哥很帥氣,我愛(ài)你!"));
map.put("p3", new Person(3, "哥94V587"));
System.out.println("map集合:"+map);
String gString = gson.toJson(map);//集合轉(zhuǎn)json
System.out.println("Map集合轉(zhuǎn)json:"+gString);
Map<String, Person> map2 = gson.fromJson(gString,new
TypeToken<HashMap<String,
Person>>(){}.getType());//json轉(zhuǎn)Bean
System.out.println("json轉(zhuǎn)map:"+map2);
}
結(jié)果:
person:Person [id=1, name=很帥](méi)
person轉(zhuǎn)json:{"id":1,"name":"很帥"}
json轉(zhuǎn)PersonPerson [id=1, name=很帥](méi)
list集合:[Person [id=1, name=哥帥一次], Person [id=2, name=哥帥二次], Person [id=3, name=哥帥三次]]
list集合轉(zhuǎn)json:[{"id":1,"name":"哥帥一次"},{"id":2,"name":"哥帥二次"},{"id":3,"name":"哥帥三次"}]
map集合:{p1=Person [id=1, name=龍], p2=Person [id=2, name=哥很帥氣,我愛(ài)你!], p3=Person [id=3, name=哥94V587]}
Map集合轉(zhuǎn)json:{"p1":{"id":1,"name":"龍"},"p2":{"id":2,"name":"哥很帥氣,我愛(ài)你!"},"p3":{"id":3,"name":"哥94V587"}}
json轉(zhuǎn)map:{p1=Person [id=1, name=龍], p2=Person [id=2, name=哥很帥氣,我愛(ài)你!], p3=Person [id=3, name=哥94V587]}