JSON方法详解

一、从JSON方法爬数据

在互联网上,获取数据是一项基本而必要的工作。JSON方法可以让我们轻松地采集和解析网页上的数据。

我们以爬取股票数据为例,使用JavaScript中的fetch函数获取数据,然后使用json()方法解析返回的JSON字符串。

fetch('https://example.com/stockdata.json')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

上述代码中,fetch函数用于获取数据,返回的是一个Promise对象,我们通过then()方法链式调用,使用json()方法对返回的响应进行解析。由于json()方法也是返回一个Promise对象,因此也可以继续使用then()方法对解析后的数据进行操作。如果在请求或解析过程中发生错误,可以使用catch()方法处理错误。

二、JSON的语法规范

JSON的语法是由一些基本元素组成,包括字符串、数字、布尔值和空值等。

一个简单的JSON示例:

{
  "name": "John Smith",
  "age": 30,
  "isMarried": true,
  "address": {
    "street": "Main Street",
    "city": "New York",
    "state": "NY",
    "zip": "10001"
  }
}

其中,整个JSON对象需要用一对花括号{}括起来;属性名和属性值之间需要用冒号:分隔;不同的属性之间需要用逗号,分隔。字符串需要用引号" "括起来,可以使用单引号' '代替。数字、布尔值和空值不需要引号括起来。

三、JSON方法JS

JSON方法常用于JavaScript编程中,其中JSON.parse()方法用于将JSON字符串转换为JavaScript对象,JSON.stringify()方法用于将JavaScript对象转换为JSON字符串。

例如:

//将JSON字符串转换为JavaScript对象
const jsonStr = '{"name": "John Smith", "age": 30}';
const jsonObj = JSON.parse(jsonStr);
console.log(jsonObj.name);  //"John Smith"

//将JavaScript对象转换为JSON字符串
const jsonObj = {name: "John Smith", age: 30};
const jsonStr = JSON.stringify(jsonObj);
console.log(jsonStr);  //'{"name":"John Smith","age":30}'

四、处理JSON的方法

在处理JSON时,有一些常用的方法可以帮助我们更加有效的操作JSON数据。

1. hasOwnProperty()

hasOwnProperty()方法用于检查一个对象是否包含特定的属性,它会返回一个布尔值。

const jsonObj = {name: "John Smith", age: 30};
console.log(jsonObj.hasOwnProperty('name'));   //true
console.log(jsonObj.hasOwnProperty('gender')); //false

2. Object.keys()

Object.keys()方法返回一个对象自身属性的键(键是以数组形式返回的)。

const jsonObj = {name: "John Smith", age: 30};
const keys = Object.keys(jsonObj);
console.log(keys);   //["name", "age"]

3. Object.values()

Object.values()方法返回一个对象自身属性的值(值是以数组形式返回的)。

const jsonObj = {name: "John Smith", age: 30};
const values = Object.values(jsonObj);
console.log(values);   //["John Smith", 30]

4. Object.entries()

Object.entries()方法返回一个对象自身属性的键/值对(键值对是以数组形式返回的)。

const jsonObj = {name: "John Smith", age: 30};
const entries = Object.entries(jsonObj);
console.log(entries);   //[["name", "John Smith"], ["age", 30]]

五、JSON方法汇总

除了以上几种常用的方法之外,JSON还有很多实用的方法,如下表所示:

方法 描述
JSON.parse() 将JSON字符串转换为JavaScript对象
JSON.stringify() 将JavaScript对象转换为JSON字符串
JSON.parseWithReviver() 使用自定义函数解析JSON字符串
JSON.stringifyWithReplacer() 使用自定义函数将JavaScript对象转换为JSON字符串
JSON.stringifyWithSpacer() 将JavaScript对象转换为带缩进的JSON字符串

六、JSON方法的功能

JSON方法的功能非常广泛,可以用于数据交换、数据存储、数据传输等多个方面。

1. 数据交换

JSON方法可以方便地实现不同系统之间的数据交换。

//从服务器获取JSON数据
fetch('https://example.com/data.json')
  .then(response => response.json())
  .then(data => process(data))
  .catch(error => console.error(error));

//将数据上传到服务器
fetch('https://example.com/save', {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify(data)
})
  .then(response => console.log(response))
  .catch(error => console.error(error));

2. 数据存储

JSON方法可以方便地将数据存储在本地。

//将数据存储在localStorage中
const data = {name: "John Smith", age: 30};
localStorage.setItem('data', JSON.stringify(data));

//从localStorage中获取数据
const dataStr = localStorage.getItem('data');
const data = JSON.parse(dataStr);
console.log(data.name); //"John Smith"

3. 数据传输

JSON方法可以方便地在客户端和服务器之间传输数据。

//将数据上传到服务器
fetch('https://example.com/save', {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify(data)
})
  .then(response => console.log(response))
  .catch(error => console.error(error));

//从服务器获取JSON数据
fetch('https://example.com/data.json')
  .then(response => response.json())
  .then(data => process(data))
  .catch(error => console.error(error));

七、JSON方法返回值

JSON方法的返回值可以是任何类型的值,例如:

const jsonObj = {name: "John Smith", age: 30};
const jsonStr = JSON.stringify(jsonObj);
console.log(jsonStr);   //字符串

const jsonArr = ['John', 'Smith', 30];
const jsonObj2 = JSON.parse(jsonArr);
console.log(jsonObj2);   //对象

const jsonFunc = function() {console.log('Hello world')};
const jsonStr2 = JSON.stringify(jsonFunc);
console.log(jsonStr2);   //undefined

八、JSON方法深拷贝

JSON方法可以实现对象的深拷贝,即拷贝出一个新的完全独立的对象。

const jsonObj = {name: "John Smith", age: 30, address: {city: "New York", state: "NY"}};
const jsonObj2 = JSON.parse(JSON.stringify(jsonObj));
jsonObj2.address.city = "Los Angeles";

console.log(jsonObj.address.city);    //"New York"
console.log(jsonObj2.address.city);   //"Los Angeles"

九、JSON方法的缺点

JSON方法也有一些不足之处,其中最明显的一个问题是性能。

由于JSON方法需要进行字符串化和解析操作,因此在处理大量数据时,性能可能会受到影响。在这种情况下,最好使用其他更高效的数据格式,例如二进制格式。

虽然JSON方法的性能问题确实存在,但在大多数应用程序中,它仍然是一个非常实用和灵活的数据格式。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/157587.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-18 20:01
下一篇 2024-11-18 20:01

相关推荐

  • 解决.net 6.0运行闪退的方法

    如果你正在使用.net 6.0开发应用程序,可能会遇到程序闪退的情况。这篇文章将从多个方面为你解决这个问题。 一、代码问题 代码问题是导致.net 6.0程序闪退的主要原因之一。首…

    编程 2025-04-29
  • ArcGIS更改标注位置为中心的方法

    本篇文章将从多个方面详细阐述如何在ArcGIS中更改标注位置为中心。让我们一步步来看。 一、禁止标注智能调整 在ArcMap中设置标注智能调整可以自动将标注位置调整到最佳显示位置。…

    编程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一个类的构造函数,在创建对象时被调用。在本篇文章中,我们将从多个方面详细讨论init方法的作用,使用方法以及注意点。 一、定义init方法 在Pyth…

    编程 2025-04-29
  • Python创建分配内存的方法

    在python中,我们常常需要创建并分配内存来存储数据。不同的类型和数据结构可能需要不同的方法来分配内存。本文将从多个方面介绍Python创建分配内存的方法,包括列表、元组、字典、…

    编程 2025-04-29
  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29
  • 用不同的方法求素数

    素数是指只能被1和自身整除的正整数,如2、3、5、7、11、13等。素数在密码学、计算机科学、数学、物理等领域都有着广泛的应用。本文将介绍几种常见的求素数的方法,包括暴力枚举法、埃…

    编程 2025-04-29
  • Python学习笔记:去除字符串最后一个字符的方法

    本文将从多个方面详细阐述如何通过Python去除字符串最后一个字符,包括使用切片、pop()、删除、替换等方法来实现。 一、字符串切片 在Python中,可以通过字符串切片的方式来…

    编程 2025-04-29
  • 用法介绍Python集合update方法

    Python集合(set)update()方法是Python的一种集合操作方法,用于将多个集合合并为一个集合。本篇文章将从以下几个方面进行详细阐述: 一、参数的含义和用法 Pyth…

    编程 2025-04-29
  • Vb运行程序的三种方法

    VB是一种非常实用的编程工具,它可以被用于开发各种不同的应用程序,从简单的计算器到更复杂的商业软件。在VB中,有许多不同的方法可以运行程序,包括编译器、发布程序以及命令行。在本文中…

    编程 2025-04-29

发表回复

登录后才能评论