小白新手村冒险之“烤”json串

news2024/11/28 15:46:37

JSON是什么?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但是JSON是独立于语言的文本格式,许多编程语言都可以使用JSON。

JSON的用途

  1. 数据交换:JSON是网络应用中最常用的数据交换格式,常用于前后端之间的数据传输。
  2. 配置文件:JSON文件常用于存储配置信息,因为它易于阅读和编辑。
  3. 存储数据:一些数据库使用JSON格式存储数据,因为它结构清晰,易于查询。

JSON的格式

JSON数据格式支持以下数据类型:

  • 对象:使用花括号 {} 包围,由键值对组成,键和值之间用冒号 : 分隔,键值对之间用逗号 , 分隔。
  • 数组:使用方括号 [] 包围,元素之间用逗号 , 分隔。
  • 字符串:必须用双引号 " 包围。
  • 数字:表示为标准的数值格式。
  • 布尔值truefalse
  • null:表示空值。

JSON的序列化与反序列化

序列化(Serialization)

序列化是将JavaScript对象转换为JSON字符串的过程。在JavaScript中,可以使用 JSON.stringify() 方法来序列化对象。

var obj = {
  name: "Xiaobai",
  age: 30,
  isAdmin: true,
  hobbies: ["reading", "coding"]
};

var jsonString = JSON.stringify(obj);
console.log(jsonString);
// 输出:{"name":"Xiaobai","age":30,"isAdmin":true,"hobbies":["reading","coding"]}

在这个例子中,obj 被转换为了一个JSON字符串 jsonString

反序列化(Deserialization)

反序列化是将JSON字符串转换回JavaScript对象的过程。在JavaScript中,可以使用 JSON.parse() 方法来反序列化字符串。

var jsonString = '{"name":"Xiaobai","age":30,"isAdmin":true,"hobbies":["reading","coding"]}';
var obj = JSON.parse(jsonString);
console.log(obj.name); // 输出:Xiaobai

在这个例子中,JSON字符串 jsonString 被转换回了JavaScript对象 obj

深入理解JSON

JSON与JavaScript对象的区别

虽然JSON基于JavaScript的对象和数组,但它们之间有一些细微的差别:

  • JSON的键必须是双引号包围的字符串。
  • JSON只有 null,没有 undefinedfunction 或其他JavaScript特有的值。
  • JSON的数值不能使用科学记数法或NaN、Infinity等特殊值。
JSON.stringify()的高级用法

JSON.stringify() 方法可以接受额外的参数来美化输出或过滤对象的属性。

var obj = {
  name: "Xiaobai",
  age: 30,
  secret: "hidden"
};

var jsonString = JSON.stringify(obj, ["name", "age"], 2);
console.log(jsonString);
/*
输出:
{
  "name": "Xiaobai",
  "age": 30
}
*/

在这个例子中,JSON.stringify() 方法的第二个参数是一个数组,指定了只序列化 nameage 属性。第三个参数 2 用于美化输出,表示在层级缩进中使用两个空格。

JSON.parse()的错误处理

JSON.parse() 方法在解析无效的JSON字符串时会抛出错误,因此通常需要使用 try...catch 语句来捕获这些错误。

var invalidJsonString = '{"name":"Xiaobai","age":30,"isAdmin":true,"hobbies":["reading","coding"';

try {
  var obj = JSON.parse(invalidJsonString);
} catch (e) {
  console.error("Parsing error:", e.message);
}

在这个例子中,invalidJsonString 是一个无效的JSON字符串,JSON.parse() 会抛出错误,错误信息通过 catch 语句被捕获并输出。

通过理解JSON的序列化与反序列化,你可以更好地在JavaScript中处理数据交换和配置管理。JSON的轻量级和语言无关性使得它成为了现代网络应用中不可或缺的一部分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2249160.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux之网络基础

网络发展 网络的发展可以从人与人之间的工作模式开始谈起, 人与人的工作模式反应了机器与机器的工作模式: 1. 独立模式: 在网络发展的早期计算机间处于独立模式, 计算机之间相互独立 最开始计算机之间是独立运行的, 数据之间的交互需要人用软盘等存储介质拷贝过去, 一般涉及…

数字图像处理(9):VGA接口及其时序

(1)特点:成本低、结构简单、应用灵活 VGA接口需要五个信号:R、G、B、Hsync、Vsync (2)VGA的工作原理: 设定一个高速时钟信号(像素时钟)来控制每个像素的传输速率&#…

111. UE5 GAS RPG 实现角色技能和场景状态保存到存档

实现角色的技能存档保存和加载 首先,我们在LoadScreenSaveGame.h文件里,增加一个结构体,用于存储技能相关的所有信息 //存储技能的相关信息结构体 USTRUCT(BlueprintType) struct FSavedAbility {GENERATED_BODY()//需要存储的技能UPROPERT…

【jmeter】服务器使用jmeter压力测试(从安装到简单压测示例)

一、服务器上安装jmeter 1、官方下载地址,https://jmeter.apache.org/download_jmeter.cgi 2、服务器上用wget下载 # 更新系统 sudo yum update -y# 安装 wget 以便下载 JMeter sudo yum install wget -y# 下载 JMeter 压缩包(使用 JMeter 官方网站的最…

图像算法在生物医药领域的应用

摘要: 随着科技的飞速发展,图像算法在生物医药领域的应用日益广泛且深入。本文详细阐述了图像算法在生物医药多个方面的应用,包括医学影像诊断、病理图像分析、药物研发、细胞图像研究以及生物医学工程等。通过对这些应用的探讨,展…

注意力(Attention)机制详解(附代码)

Attention机制是深度学习中的一种技术,特别是在自然语言处理(NLP)和计算机视觉领域中得到了广泛的应用。它的核心思想是模仿人类的注意力机制,即人类在处理信息时会集中注意力在某些关键部分上,而忽略其他不那么重要的…

Jmeter测试nginx部署的静态网页最大在线人数

一、下载Jmeter apache-jmeter-5.4.3.tar资源-CSDN文库 解压之后,双击ApacheJMeter.jar,即可打开 二、测试最大在线人数 1、plugins-manager下载安装 起初刚解压的jmeter里面没有插件管理这个选项 去官网下载:Install :: JMeter-Plugins.org 将下载j…

【深度学习|目标跟踪】StrongSort 详解(以及StrongSort++)

StrongSort详解 1、论文及源码2、DeepSort回顾3、StrongSort的EMA4、StrongSort的NSA Kalman5、StrongSort的MC6、StrongSort的BOT特征提取器7、StrongSort的AFLink8、未完待续 1、论文及源码 论文地址:https://arxiv.org/pdf/2202.13514 源码地址:https…

Scala关于成绩的常规操作

score.txt中的数据: 姓名,语文,数学,英语 张伟,87,92,88 李娜,90,85,95 王强,78,90,82 赵敏,92,8…

OpenAI Whisper 语音识别 模型部署及接口封装

环境配置: 一、安装依赖: pip install -U openai-whisper 或者,以下命令会从这个存储库拉取并安装最新的提交,以及其Python依赖项: pip install githttps://github.com/openai/whisper.git 二、安装ffmpeg: cd …

草图大师2020安装教程附安装包下载

软件介绍 草图大师(Sketchup)是由谷歌公司推出的一款环保型3D建模软件。草图大师可以快速和方便地创建、观察和修改三维创意,具有沿路径放样、导入的2D物体可随视角转动、布尔运算等功能。传统铅笔草图的优雅自如,现代数字科技的…

野火直播 5.7.5x | 频道丰富,有国外频道,部分支持回看

野火直播是一款专为电视盒子设计的电视直播软件,提供海量的电视直播资源和丰富的内容选择。涵盖全球多地的电视台直播源,包括央视、卫视、地方台、海外台等上千个电视频道。软件界面简洁,操作便捷,支持高清流畅播放,并…

题解 洛谷 Luogu P1182 数列分段 Section II 二分答案 C/C++

题目传送门: P1182 数列分段 Section II - 洛谷 | 计算机科学教育新生态https://www.luogu.com.cn/problem/P1182思路: 二分答案,每次以区间 [l, r] 中点 m 为每段和的阈值 判断在此前提下,划分段数是否不大于 M 是就记录答案…

Rust语言俄罗斯方块(漂亮的界面案例+详细的代码解说+完美运行)

tetris-demo A Tetris example written in Rust using Piston in under 500 lines of code 项目地址: https://gitcode.com/gh_mirrors/te/tetris-demo 项目介绍 "Tetris Example in Rust, v2" 是一个用Rust语言编写的俄罗斯方块游戏示例。这个项目不仅是一个简单…

Hot100 - 除自身以外数组的乘积

Hot100 - 除自身以外数组的乘积 最佳思路: 此问题的关键在于通过两次遍历,分别计算从左侧和右侧开始的累积乘积,以此避免使用额外的除法操作。 时间复杂度: 该算法的时间复杂度为 O(n),因为我们只需要遍历数组两次。…

通过抓包,使用frida定位加密位置

首先我们抓取一下我们要测试的app的某一个目标api,通过抓api的包,得到关键字。 例如:关键字:x-sap-ri 我们得到想要的关键字后,通过拦截 类,寻找我们的关键字,及找到发包收包的位置&#xff0c…

【模型学习之路】TopK池化,全局池化

来学学图卷积中的池化操作 目录 DataBatch Dense Batching Dynamic Batching DataBatch 存取操作 TopKPooling GAP/GMP 一个例子 后话 DataBatch 当进行图级别的任务时,首先的任务是把多个图合成一个batch。 在Transformer中,一个句子的维度是…

<项目代码>YOLOv8 停车场空位识别<目标检测>

YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…

如何在Python中进行数学建模?

数学建模是数据科学中使用的强大工具,通过数学方程和算法来表示真实世界的系统和现象。Python拥有丰富的库生态系统,为开发和实现数学模型提供了一个很好的平台。本文将指导您完成Python中的数学建模过程,重点关注数据科学中的应用。 数学建…

ThingsBoard规则链节点:GCP Pub/Sub 节点详解

目录 引言 1. GCP Pub/Sub 节点简介 2. 节点配置 2.1 基本配置示例 3. 使用场景 3.1 数据传输 3.2 数据分析 3.3 事件通知 3.4 任务调度 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 ThingsBoard 是一个开源的物联网平台&#xff…