学习AJAX必须掌握的JSON(JavaScript Object Notation)知识(上手案例)

笔记大纲
  • JSON简介
  • JSON基本语法
  • JS中JSON转换问题
  • Java中JSON转换问题
  • JSON对象转字符串案例
  • JSON字符串转对象案例
  • JAVA对象、JSON字符串转换案例(重点是Java集合类型)

1.JSON简介

  AJAX在开始使用XML的数据格式,XML的数据格式非常简单清晰,容易编写,但是由于XML中包含了过多的标签,以及十分复杂的结构,解析起来也相对复杂,所以AJAX中已经几乎不使用XML来发送数据!取而代之的是一项新的技术JSON。

  JSON:JavaScript Object Notation (js对象交换格式)的缩写,是JS提供的一种数据交换格式

   JSON对象本质上就是一个JS对象,但是这个对象比较特殊,它可以直接转换为字符串,在不同语言中进行传递,通过工具又可以转换为其他语言中的对象。

2.JSON基本语法

{key1:value1,key2:value2,key3:value3…}

   创建JSON对象

  (1)var json = {“name1”:”value1”,”name2”:”value2” , “name3”:[1,”str”,true]}; – 对象

  (2)var json = [{“name1”:”value1”},{“name2”:”value2”}]; – 数组

3.JSON的基本数据类型(7种)

与javascript数据类型一致

数据类型举例注意事项
字符串”codinglin”不能使用单引号
数字18.88
布尔值true、false
nullnull
对象{“name”:”codinglin”, ”age”:18}
数组[1,”str”,true]
undefined未定义(没有赋值)
3.JS中JSON转换问题
转换方式调用方法
JSON对象–>JSON字符串JSON.stringify(JSON对象)
JSON字符串–>JSON对象JSON.parse(JSON字符串)
4.Java中JSON转换问题

  在Java中可以从文件中读取JSON字符串,也可以是客户端发送的JSON字符串, 解析JSON字符串我们需要导入第三方的工具,目前主流的解析JSON的工具大概有三种json-lib、jackson、gson。三种解析工具相比较json-lib的使用复杂,且效率较差。而Jacksongson解析效率较高。使用简单,下面我用的是Google的gson工具!

  Gson中解析JSON的核心类是Gson,解析操作都是通过该类实例进行。

转换方式调用方法
JAVA对象>JSON字符串toJson()
JSON字符串->JAVA对象fromJson(String str,Class clazz)
fromJson(String str,Type type)

  注意:使用fromJson(String str,Type type)这种方式时,要使用匿名内部类的知识!

  ----gson.fromJson(jsonStr,new TypeToken<list>(){}.getType());

5.JSON对象转字符串案例

  例如:JSON对象:{“name”:”codinglin” , ”age”:18 , ”address”:”beijing” }

​    这个对象中有三个属性name、age和address,如果将该对象使用单引号引起了,那么他就变成了一个字符串‘{“name”:”codinglin” , ”age”:18 , ”address”:”beijing” }’

  变成字符串后有一个好处,就是可以在不同语言之间传递

(1)javascript代码

<script type="text/javascript" src="static/script/jquery-1.7.2.js"></script>
<script type="text/javascript">
		$(function(){
		//json对象
		 var jsonObj ={"name1":"value1","name2":"value2","name3":[1,"str",true]};
		 var jsonStr = JSON.stringify(jsonObj);
		 alert(jsonStr)

(2)网页界面

在这里插入图片描述

6.JSON字符串转对象案例

(1)javascript代码

<script type="text/javascript" src="static/script/jquery-1.7.2.js"></script>
<script type="text/javascript">
		$(function(){			
			//json字符串
			 var jsonStr ='{"name1":"value1","name2":"value2","name3":[1,"str",true]}';
			 var StrTrObj = JSON.parse(jsonStr);
				alert(StrTrObj.name3)
		})
</script>

(2)网页界面

  json字符串—>json对象,可以看出name3是一个数组类型

在这里插入图片描述

7.JAVA对象、JSON字符串转换案例
7.1.java对象是引用类型

(1)MyBlog类

public class MyBlog {
	private String name;
	private int age;
	private String adress;
	public MyBlog() {
		super();
	}
	public MyBlog(String name, int age, String adress) {
		super();
		this.name = name;
		this.age = age;
		this.adress = adress;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getAdress() {
		return adress;
	}
	public void setAdress(String adress) {
		this.adress = adress;
	}
	@Override
	public String toString() {
		return "MyBlog [name=" + name + ", age=" + age + ", adress=" + adress + "]";
	}

(2)GsonTest测试类

  注意:导包!

在这里插入图片描述

package com.codinglin.servlet;

import org.junit.jupiter.api.Test;

import com.google.gson.Gson;

public class GsonTest {
	Gson gson = new Gson();
	@Test
	public void testMyBlog() {
		//(1)java对象---json字符串
		MyBlog myBlog = new MyBlog("lindaxia",1,"CSDN");
		String jsonStr = gson.toJson(myBlog);
		System.out.println(jsonStr);
		// {"name":"lindaxia","age":1,"adress":"CSDN"}
		
		//(2)json字符串---java对象
		MyBlog myBlog2 = gson.fromJson(jsonStr,MyBlog.class);
		System.out.println(myBlog2);
		//MyBlog [name=lindaxia, age=1, adress=CSDN]
		System.out.println(myBlog2.getName());  //lindaxia	
	
	}
}
7.2.java对象是List类型
    @Test
	public void testMyBlogList() {
		List<MyBlog> list = new ArrayList<>();
		list.add(new MyBlog("lindaxia1",1,"CSDN1"));
		list.add(new MyBlog("lindaxia2",2,"CSDN2"));
		list.add(new MyBlog("lindaxia3",3,"CSDN3"));
		//(1)Java-list转为Json字符串
		String jsonStr = gson.toJson(list);
		System.out.println(jsonStr); //数组
		 /*[{"name":"lindaxia1","age":1,"adress":"CSDN1"},
		   {"name":"lindaxia2","age":2,"adress":"CSDN2"},
		   {"name":"lindaxia3","age":3,"adress":"CSDN3"}]*/
		
		//(2)Json字符串转为Java-list
		List<MyBlog> list2 = gson.fromJson(jsonStr, new TypeToken<List<MyBlog>>() {}.getType());
		System.out.println(list2);
		/*[MyBlog [name=lindaxia1, age=1, adress=CSDN1],
		 MyBlog [name=lindaxia2, age=2, adress=CSDN2], 
		 MyBlog [name=lindaxia3, age=3, adress=CSDN3]]*/
		System.out.println(list2.get(0).getName());  //lindaxia1
	}
7.3.java对象是Map类型
@Test
	public void testMyBlogMap() {
		Map<String, MyBlog> map = new HashMap<>();
		map.put("id1", new MyBlog("lindaxia1", 1, "CSDN1"));
		map.put("id2", new MyBlog("lindaxia2", 2, "CSDN2"));
		map.put("id3", new MyBlog("lindaxia3", 3, "CSDN3"));
		// (1)Java-map转为Json字符串
		String jsonStr = gson.toJson(map);
		System.out.println(jsonStr); // 数组
		/*{"id2":{"name":"lindaxia2","age":2,"adress":"CSDN2"},
		 "id1":{"name":"lindaxia1","age":1,"adress":"CSDN1"},
          id3":{"name":"lindaxia3","age":3,"adress":"CSDN3"}}
*/	

		// (2)Json字符串转为Java-map
		Map<String, MyBlog> map2 = gson.fromJson(jsonStr, new TypeToken<Map<String, MyBlog>>() {
		}.getType());
		System.out.println(map2);
		/*{id2=MyBlog [name=lindaxia2, age=2, adress=CSDN2], 
		 id1=MyBlog [name=lindaxia1, age=1, adress=CSDN1], 
		 id3=MyBlog [name=lindaxia3, age=3, adress=CSDN3]}*/
		System.out.println(map2.get("id1").getName());  //lindaxia1
	}

 ☝上述分享来源个人总结,如果分享对您有帮忙,希望您积极转载;如果您有不同的见解,希望您积极留言,让我们一起探讨,您的鼓励将是我前进道路上一份助力,非常感谢!我会不定时更新相关技术动态,同时我也会不断完善自己,提升技术,希望与君同成长同进步!

☞本人博客:https://coding0110lin.blog.csdn.net/  欢迎转载,一起技术交流吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值