专栏首页cwl_Java快速学习-JSON

快速学习-JSON

第12章 JSON

12.1 JSON 简介

  1. AJAX一开始使用的时XML的数据格式,XML的数据格式非常简单清晰,容易编写,但是由于XML中包含了过多的标签,以及十分复杂的结构,解析起来也相对复杂,所以目前来讲,AJAX中已经几乎不使用XML来发送数据了。取而代之的是一项新的技术JSON。
  2. JSON是JavaScript Object Notation 的缩写,是JS提供的一种数据交换格式。
  3. JSON对象本质上就是一个JS对象,但是这个对象比较特殊,它可以直接转换为字符串,在不同语言中进行传递,通过工具又可以转换为其他语言中的对象。
  4. 例,有如下一个JSON对象: ① {“name”:”sunwukong” , ”age”:18 , ”address”:”beijing” } ② 这个对象中有三个属性name、age和address ③ 如果将该对象使用单引号引起了,那么他就变成了一个字符串 ④‘ {“name”:”sunwukong” , ”age”:18 , ”address”:”beijing” }’ ⑤ 变成字符串后有一个好处,就是可以在不同语言之间传递。 ⑥ 比如,将JSON作为一个字符串发送给Servlet,在Java中就可以把JSON字符串转换为一个Java对象。

12.2 JSON通过6种数据类型来表示

  1. 字符串 例子:”字符串” 注意:不能使用单引号
  2. 数字: 例子:123.4
  3. 布尔值: 例子:true、false
  4. null值: 例子:null 5 ) 对象 例子:{“name”:”sunwukong”, ”age”:18}
  5. 数组 例子:[1,”str”,true]

12.3 在JS中操作JSON

  1. 创建JSON对象 var json = {“name1”:”value1”,”name2”:”value2” , “name3”:[1,”str”,true]}; var json = [{“name1”:”value1”},{“name2”:”value2”}];
  2. JSON对象转换为JSON字符串 JSON.stringify(JSON对象)
  3. JSON字符串转换为JSON对象 JSON.parse(JSON字符串)

12.4 在Java中操作JSON

  1. 在Java中可以从文件中读取JSON字符串,也可以是客户端发送的JSON字符串,所以第一个问题,我们先来看如何将一个JSON字符串转换成一个Java对象。
  2. 首先解析JSON字符串我们需要导入第三方的工具,目前主流的解析JSON的工具大概有三种json-lib、jackson、gson。三种解析工具相比较json-lib的使用复杂,且效率较差。而Jackson和gson解析效率较高。使用简单,这里我们以gson为例讲解。
  3. Gson是Google公司出品的解析JSON工具,使用简单,解析性能好。
  4. Gson中解析JSON的核心是Gson的类,解析操作都是通过该类实例进行。
  5. JSON字符串转换为对象
String json = "{\"name\":\"张三\",\"age\":18}";
Gson gson = new Gson();
//转换为集合
Map<String,Object> stuMap = gson.fromJson(json, Map.class);
//如果编写了相应的类也可以转换为指定对象
Student fromJson = gson.fromJson(json, Student.class);
  1. 对象转换为JSON字符串
Student stu = new Student("李四", 23);
Gson gson = new Gson();
//{"name":"李四","age":23}
String json = gson.toJson(stu);
		
Map<String , Object> map = new HashMap<String, Object>();
map.put("name", "孙悟空");
map.put("age", 30);
//{"age":30,"name":"孙悟空"}
String json2 = gson.toJson(map);
		
List<Student> list = new ArrayList<Student>();
list.add(new Student("八戒", 18));
list.add(new Student("沙僧", 28));
list.add(new Student("唐僧", 38));
//[{"name":"八戒","age":18},{"name":"沙僧","age":28},
{"name":"唐僧","age":38}]
String json3 = gson.toJson(list);		
     // 如果将一个数组格式的json字符串转换成java对象需要用到
     //Gson提供的一个匿名内部类: TypeToken
	TypeToken tk= new TypeToken<List<User>>(){};
	List<User> list2 = gson.fromJson(json,tk.getType());
	System.out.println(list2.get(0));

12.5 JQuery 异步请求返回JSON数据

  1. Servlet 返回json数据
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		List<Employee> emps = new EmployeeDaoJdbcImpl().getAllEmps();
		Gson gson = new Gson();
		String jsonStr = gson.toJson(emps);
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.println(jsonStr);
		out.close();
}
  1. 页面中处理 json数据
function getJsonStr(){
		//通过JQuery发送异步请求, 将所有的员工信息通过json的格式返回
 $.ajax({
	url:"getEmpsJsonStr",
	type:"post",
	dataType:"json",
	success:function(data){  // 会直接将后台返回的json字符串转换成js对象
		var str = "<tr><th>Id</th><th>LastName</th><th>Email</th><th>Gender</th></tr>";
		for(var i= 0 ;i <data.length;i++){
			var emp = data[i];
			str+="<tr align='center'><td>"
                 +emp.id+
                 "</td><td>"
                 +emp.lastName+
                 "</td><td>"
                 +emp.email+
                 "</td><td>"
                 +emp.gender+
                 "</td></tr>"	
		}	
				$("#tb").html(str);
			}
		});
	}
<body>
	<input type="button" value="getJsonStr" onclick="getJsonStr();"/>
	<table id="tb" border="1px"  align="center" width="60%" cellspacing="0px" >	
	</table>
</body>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JVM性能调优-算法内功之剖析复制算法

    cwl_java
  • 系统架构师论文-论软件的性能优化设计

    本人2004年有幸参加了中国石油集团的高性能数控测井系统项目的开发研制工作。该系统是在当前测井成套测井装备的基础上,为了满足高精度,高性能,高效率的要求开发的测...

    cwl_java
  • 速读原著-TCP/IP(常用命令)

    到目前为止,我们已经讨论了链路层和 I P层,现在可以介绍 T C P / I P对网络接口进行配置和查询的命令了。i f c o n f i g( 8 )命令...

    cwl_java
  • 第168天:json对象和字符串的相互转换

    在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法。 JSO...

    半指温柔乐
  • JQuery:将文本转化成JSON对象应注意的问题

    在JQuery的许多方法中,很多方法的参数可以传入一个JSON对象,比如Ajax方法的第二个参数。怎么将文本转化成JSON对象,需要注意以下问题:

    雪雁-心莱科技
  • Qt之JSON教程-介绍篇

    Qt君
  • 【Go 语言社区】Go学习笔记:json处理

    Encode 将一个对象编码成JSON数据,接受一个interface{}对象,返回[]byte和error: func Marshal(v interfac...

    李海彬
  • 在Go语言中使用JSON

    Encode 将一个对象编码成JSON数据,接受一个interface{}对象,返回[]byte和error: func Marshal(v interfac...

    李海彬
  • [Java IO]06_JSON操作

    6.1 JSON 知识背景 6.1.1 JSON 简介 JSON: JavaScript Object Notation(JavaScript 对象表示法) J...

    静默虚空
  • JSON对象

    星辉

扫码关注云+社区

领取腾讯云代金券