浅谈Json解析与序列化

JSON的序列化和反序列化 什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于前后端的接口数据格式。 阅读详情

从头说起:

首先的首先,什么是Json:一种数据表示形式,JSON:JavaScript Object Notation对象表示法


Json语法规则:

  • 数据在键值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组
像这样:

{ "firstName":"John" , "lastName":"Doe" }


这样:

{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}

或者这样:

var employees = [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName": "Carter" }
];

那什么是对象序列化呢?

专业术语如是解释:

序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。

通俗讲呢:对象序列化就是指将对象的状态转换为字符串

JSON对象

我们都知道eval()函数可以将Json转换为Javascript对象。Js内建的eavl()函数用Json数据来生成原生的JavaScript对象。

这是早期的Json解析器解析方法,erjson对象有两个方法:stringify()和parse()

这两个方法分别用于将js对象序列化为json字符串和把json字符串解析诶原生的js值


下面来详细说说这两个函数:

一、JSON序列化


Json.stringify()

作用:序列化原始值、对象、数组

语法:JSON.stringify(value [, replacer] [, space])

参数:

        value:要转换成JSON字符串的原始值、对象或数组

   replacer:可选参数,一个数组或函数

   space:可选参数,一个数值或一个字符串

返回:JSON格式的字符串,代表value的值,同时通过了replacer的过滤,以及根据space进行了格式化

<script>
 	var myMes= {
        "name": "ys",
        "age": 12
    };

    console.log(typeof myMes);//Object

    var jsonText = JSON.stringify(myMes);
    console.log(typeof jsonText);//String
 	</script>

成功将 json对象转化为json字符串。


1、json数据过滤 

a.如果过滤器参数是数组,那么JSON.stringify()结果中将只包含数组中列出的属性。

 var myMes = {
        "name": "ys",
        "age": 12,
        "like": "drink",
        "nationality": "China"
    };
    /*实现过滤,只留下name和age*/
    var jsonText = JSON.stringify(myMes, ["name", "age"]);
    console.log(jsonText);         //{"name": "ys", "age": 12}


b.如果第二个参数是函数,传入的函数要接收两个参数,再按照相应的需求做出处理

 var myMes= {
        "name": "ys",
        "age": 12,
        "like": "drink",
        "nationality": "China"
    };
    var jsonText = JSON.stringify(myMes, function(key, value){
        switch(key){
            case "name": 
                return "名字改变了";
            default: 
                return value;
        }
    }, 4);
    console.log(jsonText);

结果如图:


2.字符串缩进

第三个参数就是用来实现字符串缩进的,数字几就表示缩进几个空格

var myMes= {
        "name": "ys",
        "age": 12,
        "like": "drink",
        "nationality": "China"
    };
    var jsonText = JSON.stringify(myMes, ["name", "age"], 4);
    console.log(jsonText);//{"name": "ys", "age": 12}
结果如图:

如果不加第三个参数的话效果:


二、JSON解析

1.作用

  解析JSON格式的字符串

2.语法

  JSON.parse(s[, reviver])

3.参数

  s,要解析的字符串

  reviver,可选参数,用来转换解析值的可选函数

4.返回

  一个对象、数组或原始值。该返回值是从s中解析的(还有可能被reviver修改过);


看一个例子先:
 var myMes= {
        "name": "ys",
        "age": 12
    }; 
    console.log(typeof myMes);//Object
    //为了模拟json字符串
    var jsonText = JSON.stringify(myMes);
    console.log(typeof jsonText);//String

    var jsonObj = JSON.parse(jsonText);
    console.log(typeof jsonObj);//Object

作用是将json字符串转化为json对象 
类型变化 :String -> Object

JSON.parse()方法也接收另一个参数,该参数是一个函数,为了区别JSON.string()接收的过滤函数,这个函数被叫做还原函数(reviver),实际上两个函数的键值是相同的——他们都接受两个参数,并且都需要返回一个值。

提供几个写得比较清楚的博客链接:

Cadence仿真笔记(二):传统noise仿真—共源极的噪声 cadence中进行传统噪声仿真 阅读详情

相关推荐

XVF3800麦克风阵列实战:从选型到快速原型搭建

本文详细介绍了XVF3800麦克风阵列的选型与快速原型搭建实战经验。从开箱即用的特性到波束成形、回声消除等核心功能拆解,再到硬件设计避坑指南和固件开发技巧,帮助开发者高效实现智能语音设备的开发。特别适合智能音箱、会议终端等需要远场拾音和声源定位的应用场景。

weixin_29161719的博客 273

Json介绍——序列化与反序列化

介绍了json的序列化和反序列化概念,并用若干测试代码进行了json的序列化和反序列化使用展示

mrqiuwen的博客 1万+

基于FFT的阵列方向图快速计算公式推导

因为自己毕设涉及到阵列方向图综合相关知识,最近阅读了关于方向图综合的相关文献,就其中关于使用FFT计算阵列方向图的方法进行了公式推导。 简介: 自从1965年Colley-Tukey发表快速傅里叶变换[1]论文以来,FFT在许多科学技术领域获得了广泛和成功的应用。在阵列信号处理与雷达信号处理领域,随着科技的发展,对于电尺寸较大的相控阵天线,使用公式按照级数求和计算天线阵列方向图的方法效率甚低,...

qq_38151438的博客 4290

数据序列化:Json简介及使用

Json是一种轻量级的数据交换格式(也叫数据序列化方式)。Json采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 Json 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

Rain的博客 4976

深入浅出ISP:用RKISP2.x Tuner工具理解AWB、AE、HDR等核心模块的实战调参

本文深入解析RKISP2.x Tuner工具在ISP图像处理中的实战应用,重点探讨AWB、AE、HDR等核心模块的调参技巧。通过环境搭建、调试工具使用和实际案例,帮助开发者掌握如何在不同光照条件下优化图像质量,实现精准的白平衡、曝光控制和动态范围处理。

weixin_26802933的博客 487

道闸不自动落杆故障排查:从传感器原理到控制器调试全解析

在工业自动化和物联网系统中,传感器与控制器构成的闭环控制是保障设备可靠运行的核心。其基本原理是通过传感器采集环境状态,控制器依据预设逻辑做出决策并驱动执行器动作。这一技术价值在于实现了无人值守下的安全、高效自动化,广泛应用于智能交通、安防和智能楼宇等领域。以停车场道闸系统为例,其自动落杆功能高度依赖地感线圈与防砸雷达的协同。地感线圈作为触发单元,负责感知车辆接近;而防砸雷达则作为持续监测的安全单元,通过微波探测防砸区域内是否有障碍物,其信号是控制器执行落杆决策的关键依据。当系统出现车辆通过后闸杆不落的典型故

weixin_29190651的博客 311

JSON 序列化和反序列化 讲解

一、什么是JSON 数据 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 是JavaScript用来处理数据的一种格式,大部分是用来处理JavaScript和web服务器端之间的数...

天马3798 8484

保姆级教程:用Docker Compose一键部署WVP-PRO+ZLM+录像服务(含Nginx反代)

本文提供了一套完整的容器化GB28181视频平台部署方案,通过Docker Compose实现WVP-PRO、ZLMediaKit(ZLM)和录像服务的一键式部署。详细介绍了环境准备、架构设计、容器化部署实战以及高级配置优化,帮助用户快速搭建高性能视频监控管理平台,适用于安防行业和物联网设备管理场景。

weixin_30415113的博客 861

Json 序列化一 —— 基础篇

Override// 先处理 name// 再处理 authorif (!// 不是 Json 数组,视为无效值} else {@Override"}";.registerTypeAdapter(GsonError.class, new GsonErrorDeserializer()) // 注册 GsonErrorDeserializer。

tmacfrank 3000

pycharm添加Anaconda解释器显示不出来

因为我之前下载的是pycharm最新版本2024.1的,所以我抱着试一试的心态卸载重装了2021.3.3的,创建新文件的时候立刻就自己识别好了conda环境。就是图中画圈的地方,之前一直显示为python的图标,但是再Python Interpreter后面跟的路径确实是我下载anaconda的地方。另外一种方法就是使用Virtualenv Environment方式配置,但是我的pycharm还是没有识别出conda的图标。首先是这位的方法,先添加系统解释器,再重启,但是我的图标还是python。

2202_75803271的博客 4006

N32G430学习笔记11- systick使用函数-延时函数

N32学习笔记11- systick使用函数-延时回调函数-延时函数

Car12 1416

Python JSON 全方位解析:序列化、反序列化与实战技巧

本文全面介绍了Python中JSON处理的核心知识,包括序列化(dumps())与反序列化(loads())的基础操作,以及高级配置和特殊类型处理方法。重点讲解了JSON与Python数据类型的映射关系、文件读写操作(dump()/load()),并针对中文乱码、特殊类型报错等常见问题提供解决方案。通过参数配置(如ensure_ascii=False显示中文)和自定义处理函数(处理set/datetime等类型),帮助开发者实现高效、规范的JSON数据交互。文章最后总结了最佳实践,使JSON成为开发中的得力

qwerty12ljhxjdj的博客 2122

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JSON的序列化和解析 笔记

默认情况下JSON.stringify( )输出的JSON字符串不包含任何空格字符或缩进;此外,值为undefined的任何属性也都会被跳过,结果都是有效的JSON数据类型。 实际上,JSON.stringify( )除了要序列化javascript对象之外,还可以接收两个参数(用于指定以不同方式序列化javascript):1.第一个参数是过滤器(可为数组或函数) 2.第二个参数是一个选项(表示是否在JSON字符串中保留缩进)

Eliosa的博客 4万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Lua JSON 解析与序列化

Lua JSON 解析与序列化 原创文章,转载请注明出处:Lua JSON 解析与序列化 源码在最后面 接口 JSON.toString(data, space, toArray) data : any 需要序列化的数据 space : number | string 美化输出时缩进空格数量或者填充字符串,默认 nil 表示不美化 toArray : boolean 如果是数组,是否按数组格式输出,默认 true JSON.toJSON(text) text : string json 格式的

wx771720的博客 1万+

js JSON 解析与序列化

目录 一、JSON 语法 1、简单值 2、对象 3、数组 二、JSON 对象 1、将 JavaScript 对象序列化成 JSON 数据 (1)、JSON.stringify() 方法 (2)、toJSON() 方法 2、将 JSON 数据解析成JavaScript 对象 (1)、JSON.parse() 方法 一、JSON 语法 JSON 语法可以表示以下 3 种类型的值: 简单值 对象 数组 1、简单值 JSON 可以表示的简单值的类型包括:字符串、数值、布尔值 和 n.

青蛙king的博客 653

JSON 序列化 反序列化

其实就是转换数据格式的过程。

weixin_61819056的博客 1739

JSON的解析与序列化

1、JSON对象 在学习之前,我们先来看下JSON对象。早期的JSON解析器基本上就是使用JavaScript的eval()函数。由于JSON是JavaScript语法的子集,因此eval()函数可以解析,解释并释放JavaScript对象和数组。在此,对于eval()函数的具体用法和解释,我们本次不做具体的分析。 我们本次来看下面两个JSON对象的方法: stringify()

qq_31136727的博客 817

一文看懂C#对JSON序列化与反序列化解析教程(小白版)

本教程介绍了C#中使用Newtonsoft.Json库进行JSON序列化与反序列化的基础操作。内容涵盖: 准备工作:安装Newtonsoft.Json包和导入命名空间 JSON基础概念:格式特点和优势 简单JSON操作:对象与JSON字符串相互转换 格式化输出:提高JSON可读性 复杂JSON处理:包含数组和嵌套对象的案例 教程通过实际代码示例演示了从简单到复杂的JSON处理技术,适合C#初学者学习JSON数据处理的基本方法。包含序列化、反序列化以及格式化输出的完整流程,帮助开发者快速掌握JSON在C#中的

isoft888的专栏,致力于C#/python分享物联网、大数据,神经网络的等领域,欢迎讨论交流! 1942

Java之序列化与Json解析

这里写目录标题一级目录二级目录三级目录 一级目录 二级目录 三级目录

lizhichao628的专栏 3326

json知识点总结(解析与序列化)

JSON现在广泛用于前后台数据交互,是现在最流行的交互数据格式。通过看书,网络学习后,加以实践验证,取得理解后,将JOSN这块的大部分常用知识点总结了起来,如有不对地方,望指正。JSON分类1、简单的JSON对象 { "name": "ys", "age": 12 }可能好学的人会联想到,这不是和对象直接量定义对象一样吗?我们看看对象直接量 //键

xi_2130的博客 2126

JSON解析与序列化

简介1.JSON:JavaScript Object Notation 对象表示法2.JSON目前是JavaScript中读写结构化数据最好的方式3.JSON是一种数据格式,并不是一种编程语言语法简单值1.最简单的JSON数据形式就是简单值,比如5,“Hello World!”2.JSON字符串必须使用双引号对象1.与JavaScript的对象字面量的区别:(1)没有声明对象(2)没有末尾的分号(3

涛痕 499

【C#】【Json】Json序列化与反序列化

JSON 类似 XML JSON 是纯文本 JSON 具有“自我描述性”(人类可读) JSON 具有层级结构(值中存在值) JSON 可通过 JavaScript 进行解析 JSON 数据可使用 AJAX 进行传输 为什么使用 JSON? 对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用: 使用 XML 读取 XML 文档 使用 XML DOM 来循环遍历文档 读取值并存储在...

学海无涯苦作舟 1164

JSON序列化与反序列化

一、序列化与反序列化的概念 序列化(Serialization):将数据结构或是对象 转换为 二进制串(字节序列)的过程 反序列化:将二进制串(字节序列)转换为 数据结构或者对象 的过程 序列化 就是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区(如硬盘)。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。 ...

weixin_30315723的博客 1465

Unity中JSON序列化与反序列化

一.JSON介绍         JSON是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 二.JSON语法规则 对象表示为键值对 数据由逗号分隔 花括号

zhang_liujie的博客 4341

Json Js Json对象 Json字符串 序列化与反序列化

Json Js Json对象 Json字符串 序列化与反序列化 Json JavaScript Object Notation -JavaScript 用于存储和交换文本信息的语法,进行数据的传输,JSON比 XML 更小、更快,更易解析。 var person = {"name": "张三", age: 23, 'gender': true}; var ps = [{"name": "张三", "age": 23, "gender": true}, {"name": "李四", "

许久 2522

JSON序列化解析

javaScript中的JSON序列化解析 JSON的由来 在目前的开发中,JSON是一种非常重要的数据格式,它并不是编程语言,而是一种可以在服务器和客户端之间传输的数据格式。 JSON的全称是JavaScript Object Notation(JavaScript对象符号): JSON是由Douglas Crockford构想和设计的一种轻量级资料交换格式,算是JavaScript的一个子集; 但是虽然JSON被提出来的时候是主要应用JavaScript中,但是目前已经独立于编程语言,可以在各个编程语

酒客的博客 1131
上一篇: 深入理解盒子模型
下一篇: js如何获取非行间样式
Crazier_qi
博客等级 码龄11年 13粉丝 42原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值