zoukankan      html  css  js  c++  java
  • Web阶段:第十九章:JSON格式

    什么是JSON?
    1.介绍:JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换格式。
    2.一种轻量级的数据交换格式
    3.轻量级是跟xml做比较。json也可以用来保存数据,并且相同的数据使用json保存会比xml保存经小很多,而且解析速度要快很多。
    在这里插入图片描述
    客户端使用json
    服务器使用json
    传数据用json格式

    Json在JavaScript中的使用。
    json的定义
    json是由键值对组成,并且由大括号包围,每个键都必须加引号引起来,键和值之间使用冒号进行分隔。
    多组键值对之间使用逗号进行分隔。

    json的访问
    var 变量名 = {
    “key”:值 , 值可以有很多种类型,number、string,json对象,比较数组,比较json数组
    “key1”:值
    };

    如何访问json对象:
    变量名.key

    		<script type="text/javascript">
    			// json的定义
    			var jsonObj = {
    					"key1" : 12,	// number
    					"key2" : "abc",  // string
    					"key3" : [33,"333",true], // 数组
    					"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的访问
    // 			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对象转字符串
    			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字符串转json对象
    			var obj = JSON.parse( jsonString );
    			alert(obj.key1);
    		</script>
    

    Json的两个常用方法
    JSON.stringify() : 把json对象转换成为json字符串
    JSON.parse() : 把json字符串转换成为json对象

    Json在java中的使用
    在java中使用json,需要先导入jar包。gson-2.2.4.jar

    javaBean和json的互转

    @Test
    public void test1() throws Exception {
    	Person person = new Person(1,"国哥很帅!");
    	// 是谷歌jar包提供用来操作json的工具类
    	Gson gson = new Gson();
    	// 把person对象转换成为json字符串
    	String jsonString = gson.toJson(person);	
    	System.out.println( jsonString );
    	// 把json字符串转换成为javaBean对象
    	Person person1 = gson.fromJson(jsonString, Person.class);		
    	System.out.println( person1 );
    }
    

    List 和json的互转

    	@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, "哥帅三次"));
    		// 创建一个json的工具类
    		Gson gson = new Gson();
    		// 把list集合转换成为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的互转

    @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, "哥很帅气,我爱你!"));
    	map.put("p3", new Person(3, "哥94V587"));
    	
    	Gson gson = new Gson();
    	// 把集合转换json字符串
    	String mapJsonString = gson.toJson(map);
    	System.out.println( mapJsonString );
    	// fromJson方法,如果要返回一个javaBean对象。返回Class类型
    	// 如果要返回一个集合,要使用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类转json
    	System.out.println("person转json:"+json);
    	Person person2 = gson.fromJson(json, Person.class);//json转Bean对象
    	System.out.println("json转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);//集合转json
    	System.out.println("list集合转json:"+gson2);
    	Map<String, Person> map = new HashMap<String, Person>();
    	map.put("p1", new Person(1, "龙"));
    	map.put("p2", new Person(2, "哥很帅气,我爱你!"));
    	map.put("p3", new Person(3, "哥94V587"));
    	System.out.println("map集合:"+map);
    	String gString = gson.toJson(map);//集合转json
    	System.out.println("Map集合转json:"+gString);
    	Map<String, Person> map2 = gson.fromJson(gString,new TypeToken<HashMap<String, Person>>(){}.getType());//json转Bean
    	System.out.println("json转map:"+map2);
    }
    

    结果:

    person:Person [id=1, name=很帅]
    person转json:{"id":1,"name":"很帅"}
    json转PersonPerson [id=1, name=很帅]
    list集合:[Person [id=1, name=哥帅一次], Person [id=2, name=哥帅二次], Person [id=3, name=哥帅三次]]
    list集合转json:[{"id":1,"name":"哥帅一次"},{"id":2,"name":"哥帅二次"},{"id":3,"name":"哥帅三次"}]
    map集合:{p1=Person [id=1, name=龙], p2=Person [id=2, name=哥很帅气,我爱你!], p3=Person [id=3, name=哥94V587]}
    Map集合转json:{"p1":{"id":1,"name":"龙"},"p2":{"id":2,"name":"哥很帅气,我爱你!"},"p3":{"id":3,"name":"哥94V587"}}
    json转map:{p1=Person [id=1, name=龙], p2=Person [id=2, name=哥很帅气,我爱你!], p3=Person [id=3, name=哥94V587]}
    
  • 相关阅读:
    AtCoder Beginner Contest 113 D Number of Amidakuji
    UVA
    mt19937 -- 高质量随机数
    牛客网NOIP赛前集训营-提高组(第七场)C 洞穴
    牛客OI周赛4-提高组 C 战争(war)
    牛客OI周赛4-提高组 B 最后的晚餐(dinner)
    bzoj 4318 || 洛谷P1654 OSU!
    Tourists Codeforces
    bzoj 1791 [Ioi2008]Island 岛屿
    洛谷 P2231 [HNOI2002]跳蚤
  • 原文地址:https://www.cnblogs.com/javawxid/p/12812100.html
Copyright © 2011-2022 走看看