JSON入门

1、JSON数据格式

(1)JSON介绍

        JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式。它是基于ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简介和清晰的层次结构使得JSON成为理想的数据交换语言。

(2)JSON语法格式

        JSON对象的语法有三种:对象、数组、混合模式

类型语法解释
对象类型{name:value,name:value...}其中name是字符串类型,而value是任意类型
数组类型[value,value,value...]其中value是任意类型
混合类型[{},{}... ...]或{name:[]... ...}合理包裹嵌套对象类型和数组类型

(3)JSON格式书写规范

        1、使用{}和 [ ]书写,{}表示对象类型,[ ]表示数组类型

        2、对象类型中每组数据之间用逗号隔开,每组中的关键词与值之间用冒号隔开

        3、数组类型中每个值之间用逗号隔开,最后一个值后面不要加逗号

1、对象类型

        {"name":"张三" , "age":17}

2、数组类型

        ["张三" , "李四" , "王五" , 15 , 16]

3、混合模式  对象的value是数组,数组的元素是对象

        {"name":["张三" , "李四"] , "age":17}

        [{"name":"张三","age":15},{"name":"张三","age":15}]

        [{"name":["张三","李四",["赵六","田七",{"sex":"男"}]]},"张三"]

package com.ujiuye.servlet;

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.io.PrintWriter;

@WebServlet("/demo04Servlet")
public class Demo04Servlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
        //设置请求响应字符集
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter w = resp.getWriter();

        /**
        * 把json格式的字符串 响应回去
        *
        */
        //1、对象类型
        String json1 = "{\n" +
                "\t\"name\": \"张三\",\n" +
                "\t\"age\": 17\n" +
                "}";
        //w.print(json1);

        //2、数组类型
        String json2 = "[\"张三\", \"李四\", \"王五\", 15, 16]";
        //w.print(json2);

        //3、混合模式
        String json3 = "[{\n" +
                "\t\"name\": \"张三\",\n" +
                "\t\"age\": 15\n" +
                "}, {\n" +
                "\t\"name\": \"张三\",\n" +
                "\t\"age\": 15\n" +
                "}, {\n" +
                "\t\"name\": \"张三\",\n" +
                "\t\"age\": 15\n" +
                "}]";

        w.print(json3);
    }
}

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="js/jquery-3.6.0.min.js"></script>
</head>
<body>

</body>
</html>
<script>
    //请求后台
    $.get("demo04Servlet",function (obj) {
        //console.log(obj.name,obj.age) 接收json对象
        
        /*console.log(obj) 接收json数组
        for (var i = 0; i < obj.length; i++) {
            console.log(obj[i])
        }*/

        console.log(obj)
        for (var i = 0; i < obj.length; i++) {
            console.log(obj[i].name,obj[i].age)
        }
    },"json")
</script>

2、JSON数据的应用

        json的转换工具是通过java封装好的一些jar工具包,直接将java对象或集合转换成json格式的字符串。

(1)常见的JSON转换工具

工具名称介绍
Jsonlibjava类库,需要导入的jar包较多
Gsongoogle提供的一个简单的json转换工具
Fastjsonalibaba技术团队提供的一个高性能的json转换工具
Jackson开源免费的json转换工具,springmvc转换默认使用jackson

(2)使用步骤

        1、导入json相关jar包

        2、创建java对象或集合

        3、使用jacksion的ObjectMapper对象的writerValueAsString方法进行转换

(3)转换代码实现

package com.ujiuye.servlet;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.ujiuye.bean.Student;
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.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* jackson json转换工具
* 作用:将java中的对象、集合、数组...转成json格式的字符串
*/
@WebServlet("/demo05Servlet")
public class Demo05Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
        //设置请求响应字符集
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter w = resp.getWriter();
        /*//1、java对象
        Student student = new Student(1,"小花","摘花");
        //转成json类型
        ObjectMapper om = new ObjectMapper();
        String json = om.writeValueAsString(student);
        System.out.println(json);//{"sid":1,"sname":"小花","hobby":"摘花"}
        w.print(json);*/

        /*//2、List集合
        List<Student> lists = new ArrayList<>();
        lists.add(new Student(1,"小丽","学英语"));
        lists.add(new Student(2,"小红","学英语"));
        lists.add(new Student(3,"小芳","学英语"));
        ObjectMapper om = new ObjectMapper();
        String json = om.writeValueAsString(lists);
        System.out.println(json);
        //[{"sid":1,"sname":"小丽","hobby":"学英语"},{"sid":2,"sname":"小
红","hobby":"学英语"},{"sid":3,"sname":"小芳","hobby":"学英语"}]
w.print(json);*/

        /*//3、数组
        Student[] arr = new Student[3];
        arr[0] = new Student(1,"小丽","学英语");
        arr[1] = new Student(2,"小红","学英语");
        arr[2] = new Student(3,"小梅","学英语");
        String json = new ObjectMapper().writeValueAsString(arr);
        System.out.println(json);
        //[{"sid":1,"sname":"小丽","hobby":"学英语"},{"sid":2,"sname":"小
        红","hobby":"学英语"},{"sid":3,"sname":"小梅","hobby":"学英语"}]
        w.print(json);*/

        //4、boolean类型 不需要转成json
        //w.print(true);

        //5、map集合
        Map<String,Student> map = new HashMap<>();
        map.put("stu1",new Student(1,"小青","学英语"));
        map.put("stu2",new Student(2,"小红","学英语"));
        map.put("stu3",new Student(3,"小丽","学英语"));
        
        String json = new ObjectMapper().writeValueAsString(map);
        System.out.println(json);
        //{"stu2":{"sid":2,"sname":"小红","hobby":"学英语"},"stu3":
{"sid":3,"sname":"小丽","hobby":"学英语"},"stu1":{"sid":1,"sname":"小
青","hobby":"学英语"}}
        w.print(json);

    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<script src="js/jquery-3.6.0.min.js"></script>
<html>
<head>
    <title>Title</title>
</head>
<body>

</body>
</html>
<script>
    $.get("demo05Servlet",function (obj) {
        console.log(obj.stu1.sname)
        //遍历
        /*
        {"sid":1,"sname":"小花","hobby":"摘花"}
        obj代表要遍历的对象
        key代表对应的属性名
        */

        for(var key in obj) {
            //通过属性名去获取属性值
            // 对象.key 对象[key] key是常量 使用对象.key 比如student.namestudent.age
        // key是变量 使用对象[key]
            console.log(obj[key])
        }
    },"json")
</script>

        

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

互联网底层民工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值