[英]Getting JSON Array in 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 } },
{ 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无效:
你在输出中没有看到这个的原因是因为你的Promise没有.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);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.