当前位置: 首页 > 知识库问答 >
问题:

我无法使用node.js读取JSON文件

符棋
2023-03-14

嗨,我在node.js中得到了以下代码

fs.readFile(file, function(err, obj) {
    obj.data1.forEach(function(element) {
        console.log (element.key, element.key1);
    });
})

我试图以以下json格式显示键和所有的值:

{
    "data1": {
        "key": "iohiohio",
        "key1": "jhuihuj"
    },
    "data2": {
        "key4": "hoih",
        "key5": "kjhi"
   }
}

共有1个答案

南门意蕴
2023-03-14

问题是obj作为缓冲区或字符串(如果提供了UTF-8格式)从fs.readfile返回

为了将字符串或缓冲区转换为实际对象,必须使用json.parse()方法。

下面是一段注释代码,了解要一步步做什么:

var fs = require("fs");
fs.readFile("./file.json",  "utf-8", function(err, obj) {
    // print your json file to the screen
    console.log(obj);

    // parse the obj string and convert it to an actual object
    obj = JSON.parse(obj);

    // print the properties of obj.data1 as "key : value"
    for (k in obj.data1) {
        console.log(k, ":", obj.data1[k]);
    }
})

控制台结果:

D:\workspace\projects\node>node server
{
    "data1": {
        "key": "iohiohio",
        "key1": "jhuihuj"
    },
    "data2": {
        "key4": "hoih",
        "key5": "kjhi"
   }
}
key : iohiohio
key1 : jhuihuj
 类似资料:
  • 问题内容: 我需要在终端中传递一个文本文件,然后从中读取数据,我该怎么办? 如何从终端进入路径,如何在另一侧阅读? 问题答案: 您将要使用数组访问命令行参数以获取文件名,并使用FileSystem模块(fs)来读取文件。例如: 为了稍微分解一下,通常长度为2,第零个为“节点”解释器,第一个为节点当前正在运行的脚本,其后的项目在命令行中传递。从argv中提取文件名后,就可以使用文件系统函数读取文件并

  • 问题内容: 好的,所以我正在使用该模块将我的文件从angular上传到my : 这被发送到以下功能: 现在,我的目标是读取文件,然后将每一行添加到数据库中。 但是我不太确定我如何从我的服务器中读取文件并调试了服务器,找不到文件,但是正在从我的应用程序中调用api。 谁能向正确的方向推动我?:) 问题答案: 有几种不同的库可以解析Excel文件(.xlsx)。我将列出两个我觉得有趣并且值得研究的项目

  • 问题内容: 我正在尝试从JSON文件读取值到数组以进行进一步处理。我正在使用JSON-Smart 1.2.0库。由于某些限制,我不能使用2.0版本。 我收到以下异常。 我什至尝试使用JSONArray而不是JSONObject。我在这儿做错了什么?这是读取JSON内容的正确方法吗? 以下是Java代码。 以下是json文件的内容。 问题答案: 您的JSON包含一个具有单个对象元素的数组,因此您应该

  • 问题内容: 我尝试使用具有96GB RAM的服务器上的 fs.readFileSync 将大文件( 〜6Gb )加载到内存中。 问题是它失败并显示以下错误消息 RangeError:尝试分配大于最大大小的缓冲区:0x3fffffff字节 不幸的是,我没有发现增加Buffer的可能性,这似乎是一个常数。 如何克服此问题并使用Node.js加载大文件? 谢谢! 问题答案: 来自一个快乐的常见问题解答:

  • 问题内容: 我需要找到一种最佳方法,即使用node.js实时读取正在写入文件的数据。麻烦的是,Node是一艘飞速前进的船,这使得很难找到解决问题的最佳方法。 我要做什么我 有一个Java进程正在执行某项操作,然后将其执行的结果写入文本文件。运行通常需要5分钟到5个小时的时间,整个时间都会写入数据,并且可以达到相当高的吞吐率(大约1000行/秒)。 我想实时读取此文件,然后使用节点聚合数据并将其写入

  • 我是新来的node.js.我正在尝试创建一个注册页面,并使用mysql将输入的值保存在数据库中。 我可以通过在请求头上传递参数来实现这一点。但是,在请求头中传递参数始终不是一个好主意。所以尝试在请求体上传递参数。 我使用邮差测试我的node.js服务。 下面是我的演示应用程序的github链接 https://github.com/debasish283/node_gulp 我还需要做什么来传递请