JSON
1)JSON数据格式
1. JSON介绍
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
在没有学习json之前,也有一种技术用于交换数据。 xml
2. JSON语法格式
JSON对象的语法有三种:对象、数组、混合模式
类型 | 语法 | 解释 |
---|---|---|
对象类型 | {name:value,name:value...} | 其中name是字符串类型,而value是任意类型 |
数组类型 | [value,value,value...] | 其中value是任意类型 |
混合类型 | [{},{}... ...] 或 {name:[]... ...} | 合理包裹嵌套对象类型和数组类型 |
3. JSON格式书写规范
1.使用{}和[]书写,{}表示对象类型,[]表示数组类型
2.对象类型中每组数据之间用逗号隔开,每组中的关键字与值之间用冒号隔开
3.数组类型中每个值之间用逗号隔开,最后一个值后面不要加逗号/json表达式里面的符号全都是英文!!!!/
2)JSON工具使用
JSON在线解析工具:http://www.bejson.com/
作用:
1.校验JSON数据的语法是否正确
2.将不规范的JSON格式数据进行格式化
代码:
jsp
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2021/9/13
Time: 14:00
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
用户名: <span id="name"></span><br>
年龄: <span id="age"></span><br>
性别: <span id="sex"></span><br>
<button type="button" onclick="show()">显示用户数据</button>
<hr>
<div id="message"></div>
<hr>
</body>
<script src="js/jquery-1.8.3.js"></script>
<script>
function show(){
//对象
// $.post("testJson",function(data){
// $("#name").html(data.name);
// $("#age").html(data.age);
// $("#sex").html(data.sex);
// },"json");
//数组
// $.post("testJson",function(data){
// $(data).each(function(i,e){
// $("#message").append("<p>"+e+"</p>");
// })
// },"json");
//数组中有对象 混合模式
$.post("testJson",function(data){
$(data).each(function(i,e){
console.log(e.name,e.age,e.sex);
})
},"json");
}
</script>
</html>
-----------------------------------------------------------------------------------------
servlet
package com.offcn.web;
import com.offcn.entity.User;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/testJson")
public class TestJsonServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
//resp.getWriter().print(new User("张三",20,"男"));
//resp.getWriter().print("{"name":"张三","age":20,"sex":"男"}");
//resp.getWriter().print("["zhangsan", "lisi", "wangwu"]");
//向前端 响应多个user
resp.getWriter().print("[{"name":"zhangsan","age":10,"sex":"男"},{"name":"lisi","age":20,"sex":"男"},{"name":"wangwu","age":30,"sex":"男"}]");
}
}
3)JSON数据的应用
json的转换工具是通过java封装好的一些jar工具包,直接将java对象或集合转换成json格式的字符串。
1. 常见的json转换工具
工具名称 | 介绍 |
---|---|
Jsonlib | Java 类库,需要导入的jar包较多 |
Gson | google提供的一个简单的json转换工具 |
Fastjson | alibaba技术团队提供的一个高性能的json转换工具 |
Jackson | 开源免费的json转换工具,springmvc转换默认使用jackson |
2. 使用步骤
- 导入json相关jar包
- 创建java对象或集合
- 使用jackson的ObjectMapper对象的writeValueAsString方法进行转换 (可以是单个对象,也可以是集合)
3. 转换代码实现
package com.offcn; import com.fasterxml.jackson.databind.ObjectMapper; import com.offcn.entity.User; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Arrays; import java.util.List; @WebServlet("/demo6") public class DemoServlet6 extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { List<User> list = Arrays.asList(new User(1,20,"abc"), new User(2,30,"bbb"), new User(3,30,"ccc")); ObjectMapper objectMapper = new ObjectMapper(); //调用实例方法 writeValueAsString String json = objectMapper.writeValueAsString(list); //System.out.println(json); resp.getWriter().print(json); } } ```