【Java Web】速通JSON

参考笔记:JavaWeb 速通JSON_java webapi调用传json与head-CSDN博客

目录

1.JSON基本介绍

2.JSON串的格式

3.JSON在客户端/浏览器的使用

3.1 JavaScript对象和JSON串的相互转换

3.2 案例演示

4.JSON在服务端的使用

4.1 基本说明

4.2 应用场景

4.2.1 JSON字符串 <-----> JavaBean

4.2.2  Map、List、Array ------> JSON字符串


1.JSON基本介绍

 JSON 全称 JavaScript Object Notation ,即 JavaScript 对象表示法

② JSON 是轻量级的文本数据交换格式,使用广泛

 JSON 独立于语言,即 Java、PHP、asp.net 等都可以使用 JSON

JSON 主要服务于前后端的数据交互,将前端响应到后端的对象数据、后端响应到前端的对象数据用 JSON 格式进行传输,如下所示:

2.JSON串的格式

JSON 串是一个字符串,其定义格式与 JS 中通过 {} 定义对象的方式很类似,但要注意 JSON 中的每个 key 都要加双引号 "key"value 可以是 string、number、object、 array、boolean、null 类型。具体如下:

/* 定义一个JSON串 */
var personStr ='{"name":"张小明","age":20,"girlFriend":{"name":"铁铃","age":23},"foods":["苹果","香蕉","橘子","葡萄"],"pets":[{"petName":"大黄","petType":"dog"},{"petName":"小花","petType":"cat"}]}'

3.JSON在客户端/浏览器的使用

3.1 JavaScript对象和JSON串的相互转换

常用方法

 JSON.stringify(JS对象):将一个 JS 对象转换为一个 JSON 字符串

JSON.parse(jsonString):将一个 JSON 字符串转换成一个 JS 对象

3.2 案例演示

案例1:使用 JSON.stringify(JS对象) 将一个 JS 对象转换为一个 JSON 字符串

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript">
        window.onload = function () {
            //定义一个JS对象
            var person = {
                'name': '张小明',
                'age': 20,
                'girlFriend': {
                    'name': '铁铃',
                    'age': 23
                },
                'foods': ['苹果', '香蕉', '橘子', '葡萄'],
                'pets': [
                    {
                        'petName': '大黄',
                        'petType': 'dog'
                    },
                    {
                        'petName': '小花',
                        'petType': 'cat'
                    }
                ]
            }

            //模拟要将这个JS对象person从前端发往后端

            //先将JS对象转换为JSON串
            var personStr = JSON.stringify(person)
            console.log(typeof personStr)
            console.log(personStr)

            //然后将JSON串发送到后端....


        }
    </script>
</head>

<body bgcolor="#e0ffff">
    <h2 style="color: pink">请查看控制台打印出的信息捏~</h2>
</body>

</html>

输出结果:

可以看到,JSON 串的类型确实是 string 类型

 案例2:使用 JSON.parse(jsonString) 将一个 JSON 字符串转换成一个 JS 对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript">
        window.onload = function () {
            //定义一个JSON字符串,假设是从后端接收到的
            var personStr ='{"name":"小马","age":20,"hobby":["swim","sing","rap"]}'

            //JSON字符串 ----> JS对象
            var person = JSON.parse(personStr)

            //访问该对象的属性
            console.log(person)
            console.log(person.name)
            console.log(person.age)
            console.log(person.hobby)
        }
    </script>
</head>

<body bgcolor="#e0ffff">
    <h2 style="color: pink">请查看控制台打印出的信息捏~</h2>
</body>

</html>

输出结果:

4.JSON在服务端的使用

此处以 Java 为例子

 4.1 基本说明

有很多第三方类库提供了 Java 对象和 JSON 串数据相互转换的方法,比如 GsonJacksonFastjson 等等,这里我们使用 Jackson,需要引入的 jar 包如下:

4.2 应用场景

4.2.1 JSON字符串 <-----> JavaBean

import com.fasterxml.jackson.databind.ObjectMapper;
public class demo {
    public static void main(String[] args) throws Exception {
        //创建Jackson工具类
        ObjectMapper objectMapper = new ObjectMapper();

        /**演示JavaBean ----> JSON字符串的流程*/
        //创建一个Java对象
        Student student = new Student("小马", 97);

        //调用writeValueAsString方法,将JavaBean ----> JSON字符串
        String studentStr = objectMapper.writeValueAsString(student);
        System.out.println(studentStr);

        /**演示JSON字符串 ----> JavaBean的流程*/
        //定义一个JSON字符串,假设是从前端接收到的
        String jsonStr = "{\"name\":\"蔡徐坤\",\"scores\":100.0}";

        //调用readValue方法,将JSON字符串 -----> JavaBean,底层用到了反射机制
        Student student1 = objectMapper.readValue(jsonStr, Student.class);
        System.out.println(student1);

    }
}

//JavaBean实体类
class Student{
    public String name;
    public double scores;

    public Student() {
    }
    public Student(String name, double scores) {
        this.name = name;
        this.scores = scores;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", scores=" + scores +
                '}';
    }
}

运行结果:

4.2.2  Map、List、Array ------> JSON字符串

 这里跟 JavaBean ----> JSON 字符串使用的 API 是完全一样的,还是 writeValueAsString

import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class demo {
    public static void main(String[] args) throws Exception {
        //创建Jackson工具类
        ObjectMapper objectMapper = new ObjectMapper();

        /**演示Map ----> JSON字符串的流程*/
        Map map = new HashMap<>();
        map.put("name","小马");
        map.put("age",23);

        //调用writeValueAsString方法,将 Map ----> JSON字符串
        String jsonStr1 = objectMapper.writeValueAsString(map);
        System.out.println(jsonStr1);

        /**演示List ----> JSON字符串的流程*/
        List list = new ArrayList();
        list.add(new Student("蔡徐坤",23));
        list.add(new Student("丁真",27));

        //调用writeValueAsString方法,将 List ----> JSON字符串
        String jsonStr2 = objectMapper.writeValueAsString(list);
        System.out.println(jsonStr2);


        /**演示Array ----> JSON字符串的流程*/
        int[] arr = {4,5,6};

        //调用writeValueAsString方法,将 Array ----> JSON字符串
        String jsonStr3 = objectMapper.writeValueAsString(arr);
        System.out.println(jsonStr3);
    }
}

//JavaBean实体类
class Student{
    public String name;
    public double scores;

    public Student() {
    }
    public Student(String name, double scores) {
        this.name = name;
        this.scores = scores;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", scores=" + scores +
                '}';
    }
}

输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值