编程代码
新闻详情

JSON基础知识

发布时间:2021-05-18 08:24:14 浏览次数:1943

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]获取数组的值

}

实例:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>json遍历</title>

</head>

<body>

<script>

// 遍历对象

// 键名可以不加引号,也可以加单引号或双引号

var person1 = {name: "张三", age: 23, sex: "m"};

var person2 = {"name": "张三", "age": 23, "sex": "m"};

var person3 = {'name': "张三", 'age': 23, 'sex': "m"};

// 获取person对象中所有的键和值

// for in 循环

for (key in person1) {

// 无法使用person1.key,因为这样相当于person1."name"

console.log(key, person1[key]);

}


// 遍历普通数组

var arr=["唐僧","孙悟空","猪八戒","沙僧"];

for (var i=0; i < arr.length; i++)

{

console.log(arr[i]);

}


// 遍历对象数组

var ps = [{"name": "张三", "age": 23, "gender": true},

{"name": "李四", "age": 24, "gender": true},

{"name": "王五", "age": 25, "gender": false}];

for (var i = 0; i < ps.length; i++) {

var p = ps[i];

for (key in p) {

console.log(key + ":" + p[key]);

}

}

</script>

</body>

</html>

JSON数据与Java数据的相互转换

概述

要想实现JSON数据与Java数据的相互转换,需要JSON解析器,即能够解析JSON格式数据的jar包。

常见的解析器:Jsonlib,Gson,fastjson,jackson。

本节中使用jackson,因为spring内置它,为以后打下基础。

JSON转为Java对象

将JSON转换为Java对象的步骤如下:

1. 导入jackson的相关jar包

2. 创建Jackson核心对象 ObjectMapper

3. 调用ObjectMapper的相关方法进行转换:readValue(json字符串数据, Class)

第一步:导入相关jar包(注意,版本一定要匹配,三个版本应该一致,否则可能发生异常)

尴尬!看完京东大佬的这份JSON手册,才知道自己是井底之蛙

第二步:转换对象

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;

}


在线客服 双翌客服
客服电话
  • 0755-23712116
  • 13822267203