Ajax&Fetch学习笔记 02、JSON

简介: Ajax&Fetch学习笔记 02、JSON

一、介绍JSON


JSON(JavaScript Object Notation,js对象符号)。


JSON本质就是字符串,有3种形式。如今前后端数据传输借助JSON字符串来传递。



二、JSON三种形式


2.1、简单值形式


简单值:就是简简单单的一个值,如hello,12,undefined,null,这些都会当做string字符串来传递。


类型:数字、字符串、布尔值、null。

注意事项:


JSON中没有undefined值(使用JSON.parse()时是不会解析undefined的,会导致报错)。

JSON中的字符串必须使用""。

JSON中不能有注释。


2.2、对象形式


JSON中的对象形式就对应着JS中的对象。


注意点:


JSON中对象的属性名必须使用"“,属性值若是字符串必须也要使用”"。

JSON中只要涉及到字符串的就必须使用""。

不支持undeinfed。(js中的JSON工具类无法解析)

示例:


{
  "code": 200,
  "data": {
    "items":       
     [{
        "username": "用户A",
        "imgsrc": "../../images/chat/userA.jpg",
        "content": "xxx内容xxx内容xxx内容xxx内容xxx内容xxx内容xxx内容xxx内容",
        "isA": true
      },
      {
        "username": "用户B",
        "imgsrc": "../../images/chat/userB.jpg",
        "content": "xxx内容xxx内容xxx内容xxx内容xxx内容xxx内容xxx内容xxx内容",
        "isA": true
      },
      {
        "username": "用户A",
        "imgsrc": "../../images/chat/userA.jpg",
        "content": "xxx内容xxx内容xxx内容xxx内容xxx内容xxx内容xxx内容xxx内容",
        "isA": true
      },
      {
        "username": "用户B",
        "imgsrc": "../../images/chat/userB.jpg",
        "content": "xxx内容xxx内容xxx内容xxx内容xxx内容xxx内容xxx内容xxx内容",
        "isA": true
      }
    ]
  },
  "desc": "成功"
}



我们借助fastmock来为我们提供后端模拟接口:https://www.fastmock.site/mock/6d498095d4ede11f0521f2ab2c1336f5/user/items


<script>
    const url = "https://www.fastmock.site/mock/6d498095d4ede11f0521f2ab2c1336f5/user/items";
    const xhr = new XMLHttpRequest();
    xhr.onreadystatechange = () => {
        console.log(xhr.readyState);
        if (xhr.readyState != 4) return;
        if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {
            console.log(xhr.responseText);
            //将接收到的JSON字符串借助JSON工具类来转为对象
            console.log(JSON.parse(xhr.responseText));
        }
    }
    xhr.open("GET", url, true);
    xhr.send(null);
</script>



2.3、数组形式


数组形式:JSON中的数组形式也就对应这JS中的数组,可以存放许多类型,除undefined。如:[1,"hi",null,{}]。


注意点:


数组中的字符串必须使用""。

JSON中只要涉及到字符串,就必须使用""。

不支持undefined。


三、JS中JSON的常用方法


3.1、JSON.parse()


JSON.parse():将ajax响应得到的字符串转为js的对象。



3.2、JSON.stringify()


JSON.stringify():将js对象转为字符串。


<script>
    // 对象
    const data = {
        items: [
            {
                username: '用户A',
                imgsrc: '../../images/chat/userA.jpg',
                content: '好的',
                isA: true,
                type: 1
            },
            {
                type: 2,
                content: '昨天 晚上7:00'
            },
            {
                username: '用户B',
                imgsrc: '../../images/chat/userB.jpg',
                content: '在不呀  我今天晚上走的时候忘记打卡了[捂脸][捂脸]',
                isA: false,
                type: 1
            },
            {
                username: '用户B',
                imgsrc: '../../images/chat/userB.jpg',
                content: '这个能帮忙补一下嘛 我6点20走的 袁哥知道的',
                isA: false,
                type: 1
            },
            {
                type: 2,
                content: '昨天 晚上7:45'
            },
            {
                username: '用户A',
                imgsrc: '../../images/chat/userA.jpg',
                content: '你自己在钉钉上申请补卡',
                isA: true,
                type: 1
            },
            {
                username: '用户A',
                imgsrc: '../../images/chat/userA.jpg',
                content: '明天提醒你有缺卡时操作也可以',
                isA: true,
                type: 1
            },
            {
                type: 2,
                content: '昨天 晚上11:03'
            },
            {
                username: '用户A',
                imgsrc: '../../images/chat/userA.jpg',
                content: '好滴,谢谢啦',
                isA: true,
                type: 1
            }]
    };
    //将js的对象转为字符串
    const dataStr = JSON.stringify(data);
    console.log(dataStr);
    console.log(typeof dataStr);
</script>


3.3、借助parse()与stringify()来封装localstorage


需求:存储到localstorage时,value以string形式存储;取值时,将string转为object对象形式。


封装好的js文件:


const storage = window.localStorage;
//存储时,将value字符串化
const set = (key, value) => {
  storage.setItem(key, JSON.stringify(value));
}
//取时,将value转为对象形式
const get = (key) => {
  return JSON.parse(storage.getItem(key));
}
//移除指定key的键值对
const remove = (key) => {
  storage.removeItem(key);
}
//清空所有的缓存
const clear = () => {
  storage.clear();
}
export { set, get, remove, clear };


测试:


<script type="module">
    const data = {
        //存储items数组
        items: [
            {
                username: '用户A',
                imgsrc: '../../images/chat/userA.jpg',
                content: '你自己在钉钉上申请补卡',
                isA: true,
                type: 1
            },
            {
                type: 2,
                content: '昨天 晚上11:03'
            }
        ]
    };
    //测试
    import { get, set, remove, clear } from './storage.js'
    //set
    set("items", data.items);
    //get
    console.log(get("items"));
    //remove
    // remove("items");
    // console.log(get("items"));//若是取不到返回null
    //clear
    clear("items");
    console.log(get("items"));//若是取不到返回null
</script>


相关文章
|
3月前
|
前端开发 API UED
Python后端与前端交互新纪元:AJAX、Fetch API联手,打造极致用户体验!
Python后端与前端交互新纪元:AJAX、Fetch API联手,打造极致用户体验!
119 2
|
1月前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
52 1
|
2月前
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
267 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
2月前
|
前端开发 API 开发者
深度剖析:AJAX、Fetch API如何成为Python后端开发者的最佳拍档!
深度剖析:AJAX、Fetch API如何成为Python后端开发者的最佳拍档!
42 4
|
2月前
|
前端开发 JavaScript API
惊呆了!学会AJAX与Fetch API,你的Python Web项目瞬间高大上!
在Web开发领域,AJAX与Fetch API是提升交互体验的关键技术。AJAX(Asynchronous JavaScript and XML)作为异步通信的先驱,通过XMLHttpRequest对象实现了局部页面更新,提升了应用流畅度。Fetch API则以更现代、简洁的方式处理HTTP请求,基于Promises提供了丰富的功能。当与Python Web框架(如Django、Flask)结合时,这两者能显著增强应用的响应速度和用户体验,使项目更加高效、高大上。
54 2
|
2月前
|
前端开发 API 开发者
从零到精通,AJAX与Fetch API让你的Python Web前后端交互无所不能!
从零到精通,AJAX与Fetch API让你的Python Web前后端交互无所不能!
46 3
|
3月前
|
JSON 资源调度 JavaScript
Vue框架中Ajax请求的实现方式:使用axios库或fetch API
选择 `axios`还是 `fetch`取决于项目需求和个人偏好。`axios`提供了更丰富的API和更灵活的错误处理方式,适用于需要复杂请求配置的场景。而 `fetch`作为现代浏览器的原生API,使用起来更为简洁,但在旧浏览器兼容性和某些高级特性上可能略显不足。无论选择哪种方式,它们都能有效地在Vue应用中实现Ajax请求的功能。
47 4
|
2月前
|
前端开发 API 数据格式
颠覆传统!AJAX、Fetch API与Python后端,开启Web开发新篇章!
在Web开发领域,技术的快速迭代推动着应用不断进化。传统前后端交互方式已无法满足现代Web应用对高效、实时性和用户体验的需求。AJAX作为异步通信的先驱,使页面无需刷新即可更新部分内容,显著提升用户体验;尽管XML曾是其主要数据格式,但如今JSON已成为主流。Fetch API则以其简洁、灵活的特点成为AJAX的现代替代品,基于Promises的异步请求让开发更加高效。与此同时,Python后端凭借高效稳定和丰富的库支持,成为众多开发者的首选,无论是轻量级的Flask还是全功能的Django,都能为Web应用提供强大的支撑。
41 0
|
2月前
|
XML 前端开发 API
惊艳全场的秘诀!AJAX、Fetch API与Python后端,打造令人惊叹的Web应用!
惊艳全场的秘诀!AJAX、Fetch API与Python后端,打造令人惊叹的Web应用!
31 0
|
2月前
|
前端开发 JavaScript API
告别繁琐!AJAX与Fetch API,让你的前后端沟通畅通无阻,项目效率飙升!
在Web开发中,前后端的顺畅沟通至关重要。传统方法常需频繁刷新页面,影响体验与效率。AJAX和Fetch API的出现简化了这一过程。AJAX利用XMLHttpRequest实现局部页面更新,提升用户体验;Fetch API则以更简洁的语法和强大的功能,进一步优化异步请求处理。两者均能显著提高开发效率,简化代码结构,让项目迭代更快速。拥抱这些技术,让Web开发之路更加顺畅。
33 0