JavaScript 如何将JSON字符串转换为对象

JavaScript 如何将JSON字符串转换为对象

在本文中,我们将学习如何在javascript中将JSON字符串转换为对象, JSON代表JavaScript对象表示法。它是经常用作互联网通信媒介的纯格式。它看起来接近于JavaScript这样的面向对象编程语言,但不能像JavaScript一样进行访问。它由花括号括起来的属性组成。

语法:

{  
    "prop1" : "value1",  
    "prop2" : "value2"  
     ...  
}  

在JavaScript中,我们将相同的JSON内容以字符串的形式编写,因此我们不能像操作对象一样访问JSON字符串中描述的属性。

const jsonString = ‘{“bookname” : “geekforgeeks”, “author” : “bharat”, “releaseYear” : “2001”}’;

这是JSON字符串的样子,我们无法直接操作它,因为它是不可变的,所以我们需要将其纯粹转换为JavaScript对象,以便我们可以使用JavaScript对象访问方法访问每个单独的属性。

有几种方法可以将JSON字符串转换为对象。

  • 使用JSON.parse()
  • 使用String.prototype.replace()和正则表达式模式
  • 使用Function()构造函数
  • 使用带有try-catch块的JSON.parse()

我们将通过示例来探讨上述所有方法以及它们的基本实现。

方法1: 使用JSON.parse()

JavaScript中的JSON.parse()方法用于解析以JSON格式编写的JSON字符串,并返回一个JavaScript对象。

语法:

JSON.parse( string, function )

示例: 在这个示例中,我们有一个表示图书详细信息的JSON字符串。我们使用JSON.parse()将其转换为JavaScript对象。

Javascript

const jsonString = 
    `{"bookname" : "geekforgeeks",  
      "author" : "bharat",  
      "releaseYear" : "2001"}`; 
const jsonObject = JSON.parse(jsonString); 
  
console.log(jsonObject);

输出

{ bookname: 'geekforgeeks', author: 'bharat', releaseYear: '2001' }

方法2:使用带有正则表达式模式的String.prototype.replace()

在这种方法中,正则表达式模式/“(\w+)”\s*:/g匹配带有双引号的属性名称,并删除冒号前的任何空格。replace()函数修正JSON字符串,使JSON.parse()能够创建JavaScript对象。

语法:

const jsonObject = JSON.parse(jsonString.replace(/"(\w+)"\s*:/g, '"$1":'));

示例: 在这个示例中,正则表达式模式/ “(\w+)”\s*:/g匹配双引号中的属性名称并删除冒号前的空格。replace()方法修正了JSON字符串,使得JSON.parse()能够创建一个JavaScript对象。

JavaScript

const jsonString = 
    `{"bookname" : "geekforgeeks",  
      "author" : "bharat",  
      "releaseYear" : "2001"}`; 
const jsonObject = 
    JSON.parse(jsonString.replace(/"(\w+)"\s*:/g, '"$1":')); 
  
console.log(jsonObject);

输出

{ bookname: 'geekforgeeks', author: 'bharat', releaseYear: '2001' }

方法3:使用Function()构造函数

在这种方法中,Function()构造函数创建一个函数,该函数返回从jsonString解析的JavaScript对象。然后执行该函数,将结果存储在jsonObject中,并将其记录到控制台上。

语法:

let variable = new Function(arg1, arg2..., Function Body)

示例: 在这个示例中,我们使用Function()构造函数创建一个函数,该函数将评估的JSON字符串作为JavaScript对象返回。

JavaScript

const jsonString = '{"bookname": "geekforgeeks", "author": "bharat", "releaseYear": "2001"}'; 
const jsonObject = new Function('return ' + jsonString)(); 
  
console.log(jsonObject); 

输出

{ bookname: 'geekforgeeks', author: 'bharat', releaseYear: '2001' }

方法4:使用JSON.parse()和try-catch块

使用JSON.parse()和try-catch块可以在将JSON字符串解析为JavaScript对象时提供错误处理。它可以防止由于无效的JSON导致代码中断。

语法:

try {  
    const jsonObject = JSON.parse(jsonString);  
    console.log(jsonObject);  
} catch (error) {  
    console.error('Error parsing JSON:', error);  
};

示例: 在这个示例中,我们使用JSON.parse()将JSON字符串解析为JavaScript对象。如果解析成功,它会将对象记录下来;否则,它会捕获并记录错误。

JavaScript

const jsonString = 
    `{"bookname" : "geekforgeeks",  
      "author" : "bharat",  
      "releaseYear" : "2001"}`; 
  
try { 
    const jsonObject = JSON.parse(jsonString); 
    console.log(jsonObject); 
} catch (error) { 
    console.error('Error parsing JSON:', error); 
};

输出

{ bookname: 'geekforgeeks', author: 'bharat', releaseYear: '2001' }

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程