在 Node.js 中解析 Json 您所在的位置:网站首页 js加载json文件并取值 在 Node.js 中解析 Json

在 Node.js 中解析 Json

#在 Node.js 中解析 Json | 来源: 网络整理| 查看: 265

在本节中,我们将学习在 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。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有