JS 中有許多常見的函數,我們可能每天都在使用它們,但卻不知道它們的一些額外功能。 JSON.stringify
就是這樣的一個函數,今天就來看看它的特殊用法。
基礎
#JSON.stringify
方法接收一個變量,並將它轉換成JSON 表示形式。
const boy = { name: 'John', age: 23 }; JSON.stringify(boy); // {"name":"John","age":23}
JSON 就是純字串,它本質上是JS 的子集,所以並不是所有的JS 物件都能轉換為JSON:
const boy = { name: 'John', age: 23, hobbies: new Map([[0, 'coding'], [1, 'earn money']]) } JSON.stringify(boy) // {"name":"John","age":23,"hobbies":{}}
上面的範例中Map 物件就會被忽略並轉換為普通物件。而如果屬性是函數的話則這個屬性就會被忽略,有興趣的同學可以試下。
第二個參數
JSON.stringify
可以接收第二個參數,可以稱為 replacer
替換器。
你可以傳入一個字串數組,這個數組中具有的屬性才會被轉換,就像一個白名單。
const boy = { name: 'John', age: 23 } JSON.stringify(boy, ['name']) // {"name":"John"}
我們可以利用這個特性,只轉換需要轉換的屬性,過濾掉如很長的陣列、錯誤物件等。
這個 replacer
參數還可以接收一個函數。這個函數會遍歷整個對象,並將鍵和值傳入,讓你決定該如何替換它們。
const boy = { name: 'John', age: 23, hobbies: new Map([[0, 'coding'], [1, 'earn money']]) } JSON.stringify(boy, (key, value) => { if (value instanceof Map) { return [...value.values()] } return value }) // {"name":"John","age":23,"hobbies":["coding","earn money"]}
而如果你回傳了undefined
(返回null
不行),就移除這個屬性了:
JSON.stringify(boy, (key, value) => { if (typeof value === 'string') { return undefined } return value }) // {"age":23,"hobbies":{}}
#第三個參數
第三個參數space
控制了轉換後的JSON 字串的間距。
如果參數是數字,則以該數字個數的空格進行縮排:
JSON.stringify(boy, null, 2) // { // "name": "John", // "age": 23, // "hobbies": {} // }
而如果參數是字串,則以該字串進行縮排:
JSON.stringify(boy, null, '--') // { // --"name": "John", // --"age": 23, // --"hobbies": {} // }
toJSON 方法
如果我們要轉換的物件具有一個toJSON
方法,那麼就可以自訂自己被序列化的過程。您可以從方法中返回一個新值,而不是序列化該對象,並且此值將被序列化,而不是原始對象。
const boy = { name: 'John', age: 23, hobbies: new Map([[0, 'coding'], [1, 'earn money']]), toJSON() { return { name: `${this.name} (${this.age})`, favorite: this.hobbies.get(0) } } } JSON.stringify(boy) // {"name":"John (23)","favorite":"coding"}
是不是很有趣?有時候仔細看一些文件還是很有用的~
參考文章
原文網址:https:// mp.weixin.qq.com/s/_e83_G7RjVt2eR_ro7blOA
MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON /stringify
本文來自 js教學 欄目,歡迎學習!
以上是鮮為人知的 JSON.stringify 用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

1、先看看效果图,可以自行选择展示效果2、这是我在vue3项目中使用的JSON编辑器,首先引入第三方插件npminstalljson-editor-vue3yarnaddjson-editor-vue33、引入到项目中//导入模块importJsonEditorVuefrom'json-editor-vue3'//注册组件components:{JsonEditorVue},4、一般后端返回的是会将JSON转为String形式我们传给后端也是通过这种形式,就可以通

控制json序列化/反序列化1.@JsonIgnoreProperties的用法@JsonIgnoreProperties(value={"prop1","prop2"})用来修饰Pojo类,在序列化和反序列化的时候忽略指定的属性,可以忽略一个或多个属性.@JsonIgnoreProperties(ignoreUnknown=true)用来修饰Pojo类,在反序列化的时候忽略那些无法被设置的属性,包括无法在构造子设置和没有对应的setter方法.2.@Js

Java调用接口获取json数据保存到数据库1.在yml文件中配置自己定义的接口URL//自己定义的JSON接口URLblacklist_data_url:接口URL2.在Controller中添加请求方法和路径/***@Title:查询*@Description:查询车辆的记录*@Author:半度纳*@Date:2022/9/2717:33*/@GetMapping("/Blacklist")publicvoidselectBlacklist(){booleana=imB

本篇文章给大家带来了关于JWT的相关知识,其中主要介绍了什么是JWT?JWT的原理以及用法是什么?感兴趣的朋友,下面一起来看一下吧,希望对大家有帮助。

JSONSchemaJSONSchema是用于验证JSON数据结构的强大工具,Schema可以理解为模式或者规则。JsonSchema定义了一套词汇和规则,这套词汇和规则用来定义Json元数据,且元数据也是通过Json数据形式表达的。Json元数据定义了Json数据需要满足的规范,规范包括成员、结构、类型、约束等。JSONSchema就是json的格式描述、定义、模板,有了他就可以生成任何符合要求的json数据json-schema-validator在java中,对json数据格式的校验,使用

PHP作为一种常见的编程语言,在web开发中使用广泛,其与前端交互的方式也多种多样。其中,输出Json数据是一种常见的交互方式,但有时候会碰到Json无法解析的问题。为什么会出现无法解析的情况呢?下面列举了几个可能的原因。

当我们处理数据时经常会遇到将XML格式转换为JSON格式的需求。PHP有许多内置函数可以帮助我们执行这个操作。在本文中,我们将讨论将XML格式转换为JSON格式的不同方法。

一、@RestController注解在SpringBoot中的Controller中使用@RestController注解即可返回JSON格式的数据。@RestController注解包含了@Controller和@ResponseBody注解。@ResponseBody注解是将返回的数据结构转换为JSON格式。@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Controller@Respons


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

禪工作室 13.0.1
強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載
最受歡迎的的開源編輯器