在 node.js 中解析 json-ag捕鱼王app官网

在 node.js 中解析 json

作者:迹忆客 最近更新:2023/05/09 浏览次数:

在本节中,我们将学习在 node js 中同步解析 json。解析 json 数据可能被称为以你当前可能使用的特定语言解释 json 数据的过程。

json 数据通常存储在键值对中,作为用引号括起来的字符串值,同时仍然遵循 json 规范。从服务器接收或由 api 返回的 json 数据通常采用字符串格式。在这种原始格式中,json 数据不易读取和访问,因此需要转换为更用户友好的形式。

我们可以使用三种主要方法来解析 node js 中的 json 文件。对于本地文件,即那些驻留在本地计算机存储中的文件,我们可以使用 require() 函数将模块加载到 node js 环境中。但是,此方法是同步的,这意味着该程序在当前文件完全解析之前不会执行任何其他操作。

[
    {
      "id": 0,
      "name": "maribel andrews"
    },
    {
      "id": 1,
      "name": "gilliam mcdonald"
    },
    {
      "id": 2,
      "name": "lisa wright"
    }
  ]
const friends  = require("./friends.json");
console.log(friends);

样本输出:

[
  { id: 0, name: 'maribel andrews' },
  { id: 1, name: 'gilliam mcdonald' },
  { id: 2, name: 'lisa wright' }
]

该程序不适用于动态程序,但适用于静态文件。一旦进行了任何更改,可能会更改数据的程序将要求我们重新解析数据。这不是解析 json 文件的最佳方式。

或者,我们可以使用 fs 模块和 fs.readfilesync() 加载 json 文件,而不是将其作为模块加载。fs 模块是执行文件操作(例如读取文件、重命名和删除)的一种更有效的方式。fs.readfilesync() 是一个允许我们同步读取文件及其内容的接口。

[
    {
      "id": 0,
      "name": "maribel andrews"
    },
    {
      "id": 1,
      "name": "gilliam mcdonald"
    },
    {
      "id": 2,
      "name": "lisa wright"
    }
  ]
const fs = require("fs");
const friends = fs.readfilesync("./friends.json");
console.log(friends);

样本输出:


虽然我们已成功加载 json 文件,但我们尚未指定编码格式。readfilesync() 方法在未指定编码参数时(即为 null)返回原始缓冲区。文本文件的编码格式通常是 utf-8

const fs = require("fs");
const friends = fs.readfilesync("./friends.json", {encoding: 'utf-8'});
console.log(friends);

样本输出:

[
    {
      "id": 0,
      "name": "maribel andrews"
    },
    {
      "id": 1,
      "name": "gilliam mcdonald"
    },
    {
      "id": 2,
      "name": "lisa wright"
    }
  ]

现在我们已经成功读取了 json 文件,我们可以将 json 字符串解析为 json 对象。我们可以使用 json.parse() 函数来做到这一点。这是一个 javascript 函数,我们可以使用它来将 json 字符串转换为对象。

此函数接受两个参数:要解析的 json 字符串和称为 reviver 的可选参数。根据 mozilla.org,如果 reviver 参数是一个函数,它指定如何转换最初解析的值。

const fs = require("fs");
const friends = fs.readfilesync("./friends.json", {encoding: 'utf-8'});
const parsed_result = json.parse(friends);
console.log(parsed_result);

输出:

[
  { id: 0, name: 'maribel andrews' },
  { id: 1, name: 'gilliam mcdonald' },
  { id: 2, name: 'lisa wright' }
]

在本节中,我们将看到异步解析 json 字符串的方法。在前面的示例中,我们已经了解了如何同步解析 json 字符串数据。但是,在 node js 中,编写同步函数被认为是不好的,尤其是在数据很大的情况下。

我们可以使用 fs.readfile() 方法将 json 字符串数据解析为 json 对象并回调函数。

它将保证程序的其余部分将在后台获取数据的同时执行,从而减少加载数据的不必要等待时间。

const fs = require('fs');
fs.readfile('./friends.json',{encoding: 'utf-8'}, (err, data) => {
  if (err) console.error(err);
  const parsed_data  = json.parse(data);
  console.log(parsed_data);
});
console.log("rest of the program that needs to be executed!");

样本输出:

rest of the program that needs to be executed!
[
  { id: 0, name: 'maribel andrews' },
  { id: 1, name: 'gilliam mcdonald' },
  { id: 2, name: 'lisa wright' }
]

虽然在处理大量数据时,这种方法似乎比前面讨论的同步方法更好,但事实并非如此。当我们有来自外部源的数据时,我们经常需要在进行新的更改时再次重新加载数据;这与使用同步方法时的情况相同。在处理大量外部数据时,推荐使用本机 node js 流 apis。

上一篇:nodejs 中的日志记录

下一篇:更新 node.js

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 node.js 中编码 url

发布时间:2023/03/27 浏览次数:402 分类:node.js

在这篇简短的文章中,我们将学习如何在 node.js 中进行 url 编码。

在 node.js 中编码 base64

发布时间:2023/03/27 浏览次数:278 分类:node.js

在本文中,我们将学习如何在 node.js 中将字符串或文本转换为 base64。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图