Hello,今天给各位童鞋们分享JSON,赶紧拿出小本子记下来吧!
JSON概念
JSON全名称是JavaScript Object Notation,即JavaScript对象表示法。
Java的对象表示:
Person p = new Person();
p.setName("张三");
p.setAge(23);
p.setGender("男");
JavaScript的对象表示:
var p = {"name":"张三","age":23,"gender":"男"};
JSON介绍:
json现在多用于存储和交换文本信息的语法
进行数据的传输
JSON 比 XML 更小、更快,更易解析。
JSON语法
JSON语法基本规则
1、数据在键/值对中:JSON数据由键值对构成。
键可以用引号(单双引号都行)引起来,也可以不使用引号引起来。
值的取值类型有:数字(整数或浮点数)、字符串(用双引号引起来)、布尔值(true或false)、数组(在方括号中)、对象(在花括号中)、null。
值是数字类型
{age: 10, score: 78.5}
值是字符串类型
{name: "张三", sex: "m"}
值是布尔值类型
{flag: true}
值是数组类型
{names: ["zhangsan", "lisi", "wangwu"]}
{students: [{name: "zhangsan"}, {name: "lisi"}]}
值是对象类型
{student: {name: "zhangsan", age: 18, flag: true}}
值是null类型
{value: null}
2、数据由逗号分隔:多个键值对用逗号进行分隔
{key1: value1, key2: value2, key3: value3, ...}
3、花括号保存对象:使用{}定义json格式的对象,又可以嵌套其他数据类型的值。
{student: {name: "zhangsan", hobbies: ["play", "read", "listen"]}}
4、方括号保存数组:[1,2,3,4,5],又可以嵌套其他数据类型的值。
[{name1:"zhangsan"},{name2:"lisi"}]
[1,2,3,4,5,6]
读取JSON数据
读取通常是指在前端使用JavaScript读取JSON格式数据,后端Java不采用此语法:
读取对象类型中指定键的值
json对象.键名
json对象["键名"]
读取JSON数组中的值
数组对象[索引]
遍历对象
for (键名 in 对象) {
key为键名;对象[key]为键值
}
遍历数组
for (var i=0; i<数组.length; i++) {
数组[i]获取数组的值 }
实例:
JSON数据与Java数据的相互转换
概述
要想实现JSON数据与Java数据的相互转换,需要JSON解析器,即能够解析JSON格式数据的jar包。
常见的解析器:Jsonlib,Gson,fastjson,jackson。
本节中使用jackson,因为spring内置它,为以后打下基础。
JSON转为Java对象
将JSON转换为Java对象的步骤如下:
-
导入jackson的相关jar包
-
创建Jackson核心对象 ObjectMapper
-
调用ObjectMapper的相关方法进行转换:readValue(json字符串数据, Class)
第一步:导入相关jar包(注意,版本一定要匹配,三个版本应该一致,否则可能发生异常)
第二步:转换对象
public class Json2Java {
public static void main(String[] args) throws IOException {
ObjectMapper mapper=new ObjectMapper();
String json="{"username":"李四","password":"123456"}";
User user = mapper.readValue(json, User.class);
System.out.println(user);
}
}
class User{
private String username;
private String password;
public User() {
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"username='" + username + ''' +
", password='" + password + ''' +
'}';
}
}
Java对象转换为JSON
使用步骤:
-
导入jackson的相关jar包
-
创建Jackson核心对象 ObjectMapper
-
调用ObjectMapper的相关方法进行转换
所用方法如下:
writeValue(File resultFile, Object value);// 将value数据转换成字符串,并保存到指定文件中。其中value可以是数组、对象、List集合、Map集合等
writeValue(Writer w, Object value);// 将value数据转换成JSON字符串,然后将JSON数据填充到字符输出流中
writeValue(OuputStream os, Object value);// 将value数据转换成JSON字符串,然后将JSON字符串填充到字节输出流中
writeValueAsString(Object value);// 将value数据转换成JSON格式字符串返回,用得最多
实例:
案例之校验用户名是否存在
-
服务器响应的数据,在客户端使用时,要想当做json数据格式使用。有两种解决方案:
-
$.get(type):将最后一个参数type指定为"json"。
-
在服务器端设置MIME类。response.setContentType("application/json;charset=utf-8");
其中前端html页面代码如下:
TitleCheckUsernameServlet.java
好啦,今天的文章就到这里,希望能帮助到屏幕前迷茫的你们