JSON入门

JSON:JavaScript 对象表示法(JavaScript Object Notation)。

JSON 是存储和交换文本信息的语法。类似 XML。

JSON 比 XML 更小、更快,更易解析。
什么是 JSON ?
JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
JSON 是轻量级的文本数据交换格式
JSON 独立于语言 *
JSON 具有自我描述性,更易理解

  • JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言

JSON 语法是 JavaScript 语法的子集。

JSON 语法规则
JSON 语法是 JavaScript 对象表示法语法的子集。

数据在名称/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组

JSON 名称/值对
JSON 数据的书写格式是:名称/值对。
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:
“firstName” : “John”
这很容易理解,等价于这条 JavaScript 语句:
firstName = “John”

JSON 值
JSON 值可以是:
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(true 或 false)
数组(在方括号中)
对象(在花括号中)
null

JSON 对象
JSON 对象在花括号中书写:
对象可以包含多个名称/值对:
{ “firstName”:“John” , “lastName”:“Doe” }
这一点也容易理解,与这条 JavaScript 语句等价:
firstName = “John”
lastName = “Doe”

JSON 数组
JSON 数组在方括号中书写:
数组可包含多个对象:
{
“employees”: [
{ “firstName”:“John” , “lastName”:“Doe” },
{ “firstName”:“Anna” , “lastName”:“Smith” },
{ “firstName”:“Peter” , “lastName”:“Jones” }
]
}
在上面的例子中,对象 “employees” 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。

<script>			
			//json 对象  { 开始    } 结束 
			// k是字符串 使用 : 和值分开 
			// v 是值  (可以是对象.number ,string ...)
			// k-v 和k-v 用,隔开;
			var jsonObj = {"name":"张三","age":34};		
			// 通过对象点属性 获取值 
			console.log(jsonObj.name);
			console.log(jsonObj.age);			
			// json对象可以数组 
			var jsonObj2 = [10,20,30];			
			console.log(jsonObj2[1]);		
			//json 可以嵌套 
			var jsonObj3 = {
				            "name":"张三",
				            "age":34,
				             "dog":{
				             	"name":"旺财",
				             	"age":2
				             }
			              };		
			// 先拿到 dog 对象 
			var dogName = jsonObj3.dog.name;
			console.log(dogName);			
		</script>
<script>			
			// json k 是字符串 可以省略
			var json1 = {name:"aa",age:20};
			console.log(json1);
			console.log(typeof json1);	//typeof这个关键字是反应json1的类型		
			// 把json对象转成字符串 
			var jsonStr = JSON.stringify(json1);
			console.log(jsonStr);
			console.log(typeof jsonStr);			
			//把json字符串转成 json对象 
			var jsonStr1 = '{"name":"aa","age":20}';			
			// JSON.parse() 把字符串转成json 
			var jsonObj = JSON.parse(jsonStr1);
			console.log(jsonObj.name + jsonObj.age);
		</script>

在这里插入图片描述
直接把Java对象发给js前端,js无法识别,
先将java对象转成json字符串 -------》
再将json字符串转成java对象


/**
 *  把对象转成 json字符串
 */
public class Demo01 {

	public static void main(String[] args) {
		
		//创建一个对象
		User u = new User("aa", 34);
		
		//u ==> {"name":"aa","age":34};
		
		StringBuilder sb = new StringBuilder();
		
		sb.append("{").append("\"name\":").append(u.getName()).append("}");		
		System.out.println(sb.toString());
		
		// 对象转成 json字符串    框架     fastJson   阿里巴巴 产品
		
		// 下载jar  地址  https://mvnrepository.com/
		
		// 把 java对象转成 json字符串 
		String jsonString = JSON.toJSONString(u);//这里是使用了fastJson的JSON 框架 简化了代码
		System.out.println(jsonString);
		
		// 把java集合对象转成 字符串 
		List<User> list = new ArrayList();
		list.add(new User("乔峰", 30));
		list.add(new User("段正淳", 35));
		list.add(new User("白刀风", 30));
		
		// 统计  JSON.toJSONString(u);
		String jsonString2 = JSON.toJSONString(list,true);		
		System.out.println(jsonString2);		
						
		//   						Gson       Google 产品
	}
}
/**
 *  把 json字符串 转成java对象 
 */
public class Demo02 {

	public static void main(String[] args) {
		
		//{"age":34,"name":"aa"}
		
		String jsonstr = "{\"age\":34,\"name\":\"aa\"}";
		
		// 把 字符串 直接转成 对象  JSON.parseObject(str,clazz)
		User u = JSON.parseObject(jsonstr, User.class);
		System.out.println();
		
		
		String jsonStr2 ="[\r\n" + 
				"	{\r\n" + 
				"		\"age\":30,\r\n" + 
				"		\"name\":\"乔峰\"\r\n" + 
				"	},\r\n" + 
				"	{\r\n" + 
				"		\"age\":35,\r\n" + 
				"		\"name\":\"段正淳\"\r\n" + 
				"	},\r\n" + 
				"	{\r\n" + 
				"		\"age\":30,\r\n" + 
				"		\"name\":\"白刀风\"\r\n" + 
				"	}\r\n" + 
				"]";
		
		//把 json字符串 转成 java对象
		List<User> list = JSON.parseArray(jsonStr2, User.class);
		
		for (User user : list) {
			System.out.println(user);
		}
		
	}
}
public class User {

	private String name;
	private int age;

	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 User() {
		// TODO Auto-generated constructor stub
	}

	public User(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	@Override
	public String toString() {
		return "User [name=" + name + ", age=" + age + "]";
	}

}
//创建一个对象 
		User u = new User("段正淳", 40);
		
		//创建gson 对象 
		Gson gson = new Gson();
		
		//通过 gson 把对象转成字符串 
		String json = gson.toJson(u);
		System.out.println(json);
		
		// 把集合转成字符串 
		List<User> list = new ArrayList<>();
		
		list.add(new User("甘宝宝", 34));
		list.add(new User("秦红棉", 35));
		list.add(new User("王夫人", 35));

		// 把集合转成 json字符串 
		String json2 = gson.toJson(list);
		
		System.out.println(json2);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值