Javascript 在node.js中获取JSON数组
我试图将读取的对象数组从文件解析为json数据,并在其上循环。Javascript 在node.js中获取JSON数组,javascript,json,node.js,Javascript,Json,Node.js,我试图将读取的对象数组从文件解析为json数据,并在其上循环。 Out.json文件内容 [ { id: 10, name: 'ProspectJourney', details: { name: 'ProspectJourney', created_at: 1482943640422, versioning: null }, m_id: 1, monit: { memory: 192741376, cpu: 0 } },
Out.json
文件内容
[ { id: 10,
name: 'ProspectJourney',
details:
{ name: 'ProspectJourney',
created_at: 1482943640422,
versioning: null },
m_id: 1,
monit: { memory: 192741376, cpu: 0 } },
{ id: 10904,
name: 'Servicing',
details:
{ name: 'Servicing',
created_at: 1482943651962,
versioning: null },
m_id: 2,
monit: { memory: 186843136, cpu: 0 } } ]
而我可以将缓冲区放入字符串并将其注销
const fs = require('fs');
const dataPromise = new Promise(function (resolve, reject) {
fs.readFile('Out.json', function(err, data) {
if (err)
reject(err);
else
resolve(data);
})
})
dataPromise.then((result) => {
console.log(result.toString());
})
如果我尝试解析它,则不会发生同样的情况。你能告诉我出了什么问题吗
不起作用
dataPromise.then((result) => {
console.log(JSON.parse(result.toString()));
})
Nodejs版本4.3.1
请不要建议使用任何npm模块您必须首先使用JSON.parse()函数来解析JSON数据,然后使用JSON.stringify()将整个数据转换为字符串格式,以便在需要时显示 USERS.JSON
{
"user1" : {
"name" : "mahesh",
"password" : "password1",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "suresh",
"password" : "password2",
"profession" : "librarian",
"id": 2
},
"user3" : {
"name" : "ramesh",
"password" : "password3",
"profession" : "clerk",
"id": 3
}
}
代码
var express = require('express');
var app = express();
var fs = require("fs");
app.get('/listUsers', function (req, res) {
fs.readFile(__dirname + "/" + "users.json", 'utf8', function (err, data) {
console.log(data);
res.end(data);
});
})
正如@FelixKling在评论中指出的,您的JSON无效:
.catch
(参见下面的示例)
让程序工作的一种方法是对单引号和双引号执行全局替换,并按如下方式引用键:
const fs = require('fs');
const dataPromise = new Promise(function (resolve, reject) {
fs.readFile('Out.json', function(err, data) {
if (err)
reject(err);
else
resolve(data);
})
})
dataPromise.then((result) => {
let jsonStr = result.toString();
// PUT THE KEYS IN DOUBLE QUOTES AND REPLACE SINGLE QUOTES WITH DOUBLE QUOTES
jsonStr = jsonStr.replace(/(\w*):/g, function(match, key, offset, string){
return `"${key}":`;
}).replace(/'/g, '"');
// YOU CAN SEE WHAT THE REPLACED STRING LOOKS LIKE IF YOU UNCOMMENT THE LINE BELOW
// console.log("Converted String: \n" + jsonStr);
console.log("Parse JSON and print it:");
console.log(JSON.parse(jsonStr));
})
.catch(err => {
// PRINT OUT THE ERROR THAT OCCURRED IN THE PROMISE
console.log(err);
});
该文件不包含有效的JSON,因此无法将其解析为JSON。在JSON中,键必须加引号,并且只有双引号才能有效地表示字符串。同时粘贴记录的数据。尝试使用
require('Out.json')
以避免fs
@FelixKling谢谢,我弄错了,出了什么问题。。非常感谢……)@拉尔。。当然:)这可能(也可能不)回答了这个问题,但没有任何解释,新手很难理解为什么这是一个好答案。为了社区的利益,请添加代码注释或某种形式的简要说明。请阅读我们的社区指南以及如何回答questions@ochi我一定会的!!我也是新手!!你能把两个答案合并成一个吗?(然后删除另一个)-使用答案底部的编辑链接对其进行修改。欢迎来到StackOverflow:)