JS JSON對象轉字元串深度剖析

JS JSON對象轉字元串是一個非常基礎且重要的操作,隨著應用場景的不同,涉及到的知識點也會有所不同。本文將從多個角度對JS JSON對象轉字元串進行深度闡述,包括數據類型、API使用方法、轉換過程中的注意事項等。

一、JSON對象介紹

JSON是JavaScript Object Notation的縮寫,是一種輕量級的數據交換格式。

JSON對象是JavaScript的內置對象,可以在代碼中直接使用。JSON對象有兩個方法:JSON.stringify()用於將JS對象轉換成JSON字元串,JSON.parse()用於將JSON字元串轉換成JS對象

//JS對象
let person = {
  name: '張三',
  age: 18,
  isStudent: true,
  hobbies: ['籃球', '游泳']
};

//使用JSON.stringify()方法將JS對象轉換成JSON字元串
let personStr = JSON.stringify(person);
console.log(personStr);
//輸出結果:
//{"name":"張三","age":18,"isStudent":true,"hobbies":["籃球","游泳"]}

//使用JSON.parse()方法將JSON字元串轉換成JS對象
let personObj = JSON.parse(personStr)
console.log(personObj);
//輸出結果:
//{name: "張三", age: 18, isStudent: true, hobbies: Array(2)}

二、JS數據類型轉換

在進行JS JSON對象轉字元串過程時,需要注意JS數據類型的轉換問題。JS中各種數據類型轉換的規則如下:

1、數值型轉字元串型:通過toString()方法即可將數值型轉換成字元串型。

let num = 123;
let str = num.toString();
console.log(typeof str + ' ' + str);
//輸出結果:string 123

2、字元串型轉數值型:通過Number()或者parseFloat()方法將字元串型轉換成數值型。

let str1 = "123";
let str2 = "123.45";
let num1 = Number(str1);
let num2 = parseFloat(str2);
console.log(typeof num1 + ' ' + num1);
console.log(typeof num2 + ' ' + num2);
//輸出結果:number 123
//         number 123.45

3、布爾型轉字元型:通過toString()方法將布爾型轉換成字元串型。

let bool = true;
let str = bool.toString();
console.log(typeof str + ' ' + str);
//輸出結果:string true

4、字元型轉布爾型:通過Boolean()方法將字元串型轉換成布爾型。

let str1 = "true";
let str2 = "false";
let bool1 = Boolean(str1);
let bool2 = Boolean(str2);
console.log(typeof bool1 + ' ' + bool1);
console.log(typeof bool2 + ' ' + bool2);
//輸出結果:boolean true
//         boolean false

5、數組、對象轉字元串型:數組和對象在使用JSON.stringify()方法轉換成字元串型時,會將數組、對象內部的元素全部轉換為字元串,從而影響到原數組、對象的類型,數據處理過程中需要注意這一點。

//數組
let arr = [1, true, "hello"];
let arrStr = JSON.stringify(arr);
console.log(typeof arrStr + ' ' + arrStr);
//輸出結果:string [1,true,"hello"]

//對象
let obj = {a:1, b:true, c:"hello"};
let objStr = JSON.stringify(obj);
console.log(typeof objStr + ' ' + objStr);
//輸出結果:string {"a":1,"b":true,"c":"hello"}

三、JSON.stringify()方法使用

JSON.stringify()方法是將JS對象轉換成JSON字元串的核心方法。

1、語法格式

JSON.stringify(value[, replacer[, space]])

參數說明:

value: 必選參數,要進行轉換的JS對象

replacer:可選參數,用來篩選需要轉換的對象的屬性

space:可選參數,用來對字元串進行格式化操作,可以是空格或字元串(默認是不使用格式化)

2、使用方法

let a = {
  name: '小明',
  age: 18,
  gender: '男',
  hobbies: ['唱歌', '跳舞']
};

let b = JSON.stringify(a);
console.log(b);
//輸出結果:{"name":"小明","age":18,"gender":"男","hobbies":["唱歌","跳舞"]}

3、replacer參數的使用

replacer參數可以通過函數的方式進行使用,函數的返回值即為轉化後的值。

let a = {
  name: '小明',
  age: 18,
  gender: '男',
  hobbies: ['唱歌', '跳舞']
};

let b = JSON.stringify(a, function(key, value) {
  if(key == "gender") {
    return undefined;
  }
  return value;
});

console.log(b);
//輸出結果:{"name":"小明","age":18,"hobbies":["唱歌","跳舞"]}

4、space參數的使用

let a = {
  name: '小明',
  age: 18,
  gender: '男',
  hobbies: ['唱歌', '跳舞']
};

let b = JSON.stringify(a, null, 4);

console.log(b);
//輸出結果:
//{
//    "name": "小明",
//    "age": 18,
//    "gender": "男",
//    "hobbies": [
//        "唱歌",
//        "跳舞"
//    ]
//}

四、JSON.parse()方法使用

JSON.parse()方法是將JSON字元串轉換成JS對象的核心方法。

1、語法格式

JSON.parse(text[, reviver])

參數說明:

text: 必選參數,要進行轉換的JSON字元串類型的數據

reviver:可選參數,用來修復由JSON.stringify()方法造成的數據損壞

2、使用方法

let a = '{"name":"小明","age":18,"gender":"男","hobbies":["唱歌","跳舞"]}';

let b = JSON.parse(a);

console.log(typeof b + ' ' + b.name + ' ' + b.age + ' ' + b.gender + ' ' + b.hobbies);
//輸出結果:object 小明 18 男 唱歌,跳舞

3、reviver參數的使用

reviver參數可以通過函數的方式進行使用,函數的返回值即為轉化後的值。

let a = '{"name":"小明","age":18,"gender":"男","hobbies":["唱歌","跳舞"]}';

let b = JSON.parse(a, function(key, value) {
  if(key == "gender"){
    return undefined;
  }
  return value;
});

console.log(typeof b + ' ' + b.name + ' ' + b.age + ' ' + b.gender + ' ' + b.hobbies);
//輸出結果:object 小明 18 undefined 唱歌,跳舞

五、轉換過程中的注意事項

1、轉換JS對象時,對象的屬性名必須是雙引號引起來的字元串,不能是未使用雙引號引起來的字元串或者數字,並且數組不支持最後一個元素後逗號。

//使用JSON.stringify()方法轉換錯誤的示例
let a = {
  name: "xiaoming",
  age: 18,
  gender: "男"
};

let b = JSON.stringify(a);
console.log(b);
//輸出結果:{"name":"xiaoming","age":18,"gender":"男"}

2、轉換JSON字元串時,JSON字元串的格式必須正確,否則會報錯。

//使用JSON.parse()方法轉換錯誤的示例
let a = '{"name":"xiaoming","age":18,"gender":"男"';
let b = JSON.parse(a);

console.log(typeof b + ' ' + b.name + ' ' + b.age + ' ' + b.gender);
//輸出結果:Unexpected end of JSON input undefined undefined undefined

3、對於循環引用的情況,JSON.stringify()方法會跳過循環引用的屬性,而JSON.parse()方法不會處理循環引用的屬性。

let a = {
  name: "xiaoming",
  age: 18,
  child: {
    name: "xiaohong",
    age: 15,
    father: null
  }
};

a.child.father = a;

let b = JSON.stringify(a);
console.log(b);
//輸出結果:{"name":"xiaoming","age":18,"child":{"name":"xiaohong","age":15}}

let c = JSON.parse(b);
console.log(c);
//輸出結果:{name: "xiaoming", age: 18, child: {name: "xiaohong", age: 15}}

六、總結

本文從JSON對象的介紹、JS數據類型轉換、JSON.stringify()方法使用、JSON.parse()方法使用、轉換過程中的注意事項等多個方面介紹了JS JSON對象轉字元串的知識點。通過這篇文章的學習,相信大家對JSON對象轉字元串已經有了更深入的了解。

原創文章,作者:LBWDM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/331641.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
LBWDM的頭像LBWDM
上一篇 2025-01-20 14:10
下一篇 2025-01-20 14:11

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python中將字元串轉化為浮點數

    本文將介紹在Python中將字元串轉化為浮點數的常用方法。在介紹方法之前,我們先來思考一下這個問題應該如何解決。 一、eval函數 在Python中,最簡單、最常用的將字元串轉化為…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • Python學習筆記:去除字元串最後一個字元的方法

    本文將從多個方面詳細闡述如何通過Python去除字元串最後一個字元,包括使用切片、pop()、刪除、替換等方法來實現。 一、字元串切片 在Python中,可以通過字元串切片的方式來…

    編程 2025-04-29
  • 面向對象編程、類和對象

    面向對象編程(Object-Oriented Programming, OOP)是一種編程方法,它將現實世界中的事物抽象為對象(Object),對象的屬性和方法被封裝成類(Clas…

    編程 2025-04-29
  • 深度查詢宴會的文化起源

    深度查詢宴會,是指通過對一種文化或主題的深度挖掘和探究,為參與者提供一次全方位的、深度體驗式的文化品嘗和交流活動。本文將從多個方面探討深度查詢宴會的文化起源。 一、宴會文化的起源 …

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • Python如何將字元串1234變成數字1234

    Python作為一種廣泛使用的編程語言,對於數字和字元串的處理提供了很多便捷的方式。如何將字元串「1234」轉化成數字「1234」呢?下面將從多個方面詳細闡述Python如何將字元…

    編程 2025-04-29

發表回復

登錄後才能評論