二次精进---JSON

JSON

1. JSON 介绍

  • JavaScript Object Notation(JavaScribt对象表示法)。
  • JSON是轻量级的文本数据交换格式。
  • JSON 独立于语言,具有自我描述性,更易理解。

1.1 JSON语法规则

  • 数据由键(key)/值(value)描述,由逗号分隔;键和值用“ :”进行分割。

    键和值都用双引号包裹(当值为数字时,可以不用双引号)。

  • 大括号代表一个完整的对象,拥有多个键/值对。

  • 中括号保存数组,多个对象之间使用逗号分隔。

    最后一个键值对不需要用逗号,否则会破坏其中的规则!

例:

{“sites”:[
        {"name":"慕课网","url":"www.imooc.com"},
        {"name":"百度","url":"www.baidu.com"},
	    {"name":"百度","url":"www.baidu.com"}
    ]
}   

1.2 利用JSON存储信息

创建文件emp.json

[
	{
		"empno": 7369,
		"ename": "李宁",
		"job": "软件工程师",
		"hiredate": "2017-05-12",
		"salary": 13000,
		"dname": "研发部"
	},
	{
		"empno": 7499,
		"ename": "王乐",
		"job": "客户经理",
		"hiredate": "2017-04-22",
		"salary": 10000,
		"dname": "市场部",
		"customers": [
			{
				"cname": "李东"
			},
			{
				"cname": "刘楠"
			}
		]
	}
]

1.3 javaScript中访问JSON

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
	var json = [
		{
			"empno": 7369,
			"ename": "李宁",
			"job": "软件工程师",
			"hiredate": "2017-05-12",
			"salary": 13000,
			"dname": "研发部"
		},
		{
			"empno": 7499,
			"ename": "王乐",
			"job": "客户经理",
			"hiredate": "2017-04-22",
			"salary": 10000,
			"dname": "市场部",
			"customers": [
				{
					"cname": "李东"
				},
				{
					"cname": "刘楠"
				}
			]
		}
	];
	//在浏览器控制台中对json内容进行输出
	console.log(json);
	for(var i = 0 ; i < json.length ; i++){
		var emp = json[i];
		document.write("<h1>");
		document.write(emp.empno);
		document.write("," + emp.ename);
		document.write("," + emp.job);
		document.write("," + emp.hiredate);
		document.write("," + emp.salary);
		document.write("," + emp.dname);
		document.write("</h1>");
		if(emp.customers != null){
			document.write("<h2>---")
			for(var j = 0 ; j < emp.customers.length ; j++){
				var customer = emp.customers[j];
				document.write(customer.cname + ",")
			}
			document.write("</h2>")
		}
	}
</script>
</head>
<body>
</body>
</html>

1.4 JSON与字符串相互转换

1.4.1 JSON.parse() 方法将字符串转换为JSON对象。

例:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>字符串转JSON</title>
	<script type="text/javascript">
		var str = "{\"class_name\":\"五年级四班\"}";//str.ename
		var json = JSON.parse(str);
		console.log(str);
		console.log(json);
		document.write("班级:" + json.class_name);
	</script>
</head>
<body>

</body>
</html>

\"…\"表示原意输出,避免被外面的符号产生干扰!

1.4.2 **JSON.stringify()**方法将JSON对象转换为字符串。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSON转字符串</title>
<script type="text/javascript">
	var json1 = {"class_name" : "五年级四班"};
	var str1 = JSON.stringify(json1);
	console.info(json1);
	console.info(str1);
	var json2 = {};
	json2.class_name = "五年级五班";
	json2.floor = "逸夫楼四层";
	json2.teacher = "王义夫";
	console.info(json2);
</script>
</head>
<body>

</body>
</html>

注意:JSON对象,是浏览器内置对象(ie8以下版本浏览器不支持),javascript可以直接调用 。

2. JSON 与Java交互

2.1 介绍
  • Java的JSON工具包还有FastJson(阿里巴巴开发,国内使用最广泛), Jackson(国外使用的老牌工具包), Gson(谷歌开发的),Json-lib…(很多开源平台的明星项目)。

  • FastJson是阿里巴巴著名的JSON序列化与反序列工具包。

    fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java.Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。

  • FastJson国内拥有大量使用者,拥有API简单,效率高等优点。

  • githup是全世界最著名的开源软件平台。

2.2 FastJson的序列化与反序列化

1.新建一个实体类;

2.实例化一个对象的类;

3.使用JSON.toString将对象序列化(变成字符串);

4.使用JSON.parseObject(json,Employee.class);

JSON注解:

1.@JSONField(format=“yyyy-MM-dd HH:mm:ss SSS”)

​ 以年-月-日 时-分-秒 毫秒的格式输出日期。

2.@JSONField(name="")

​ 将此注解标记的属性的名称修改为name后面的内容。

3.@JSONField(serialize = false)

​ 对此注解标记的属性不做序列化操作(JSON字符串中不会转换该属性)。

2.3 FastJSON对象数组序列化与反序列化
public class FastJsonSample2 {
   public static void main(String[] args) {
      List emplist = new ArrayList();
      for (int i = 1 ; i <= 100 ; i++) {
         Employee employee = new Employee();
         employee.setEmpno(4488 + i);
         employee.setEname("员工" + i);
         emplist.add(employee);
      }
      String json = JSON.toJSONString(emplist);
      System.out.println(json);
      List<Employee> emps = JSON.parseArray(json , Employee.class);
      for(Employee e : emps) {
         System.out.println(e.getEmpno() + ":" + e.getEname());
      }
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值