解析包含多个对象的JSON文件
我有一个JSON文件,其中包含多个相同结构的对象,如下所示:解析包含多个对象的JSON文件,json,node.js,Json,Node.js,我有一个JSON文件,其中包含多个相同结构的对象,如下所示: { "id": "123", "type": "alpha" } { "id": "321", "type": "beta" } 我正在使用node.js读取文件 fs.readFile(__dirname + "/filename.json", 'utf8', function(err, data) { var content = JSON.parse(JSON.stringify(data)); 如果我
{
"id": "123",
"type": "alpha"
}
{
"id": "321",
"type": "beta"
}
我正在使用node.js读取文件
fs.readFile(__dirname + "/filename.json", 'utf8', function(err, data) {
var content = JSON.parse(JSON.stringify(data));
如果我做一个控制台。日志(内容)的事情看起来不错。我看到了json文件的内容。我试图迭代每个对象,但我不确定如何做到这一点。我试过使用
for(var doc in content)
但医生并不像我想象的那样,每件物品都有。如何循环内容以获取json格式的每个对象,以便对其进行解析?如果
内容
是一个数组,则可以使用
content.forEach(function (obj, index) { /* your code */ })
如果只需要迭代,forEach循环或normal for循环都可以工作,请参见文档:
for(var i = 0; i<content.length(); i++){
//perform whatever you need on the following object
var myobject = content[i];
}
for(var i=0;i取决于文件,当前的两个答案(Osama和Daniel)假设您有一个JSON数组:
[
{
"id": "123",
"type": "alpha"
},
{
"id": "456",
"type": "beta"
}
]
在这种情况下,您可以使用任意数组迭代器:
var async = require('async'),
content = require(__dirname + "/filename.json");
async.each(content, function (item, callback) {
//...
});
但在您的情况下,它似乎不是JSON(没有括号表示数组,也没有逗号分隔对象),因此在JSON.parse不抛出任何错误的情况下,您需要首先隔离对象:
var fs = require('fs'),
async = require('async');
fs.readFile(__dirname + "/filename.notjson", 'utf8', function(err, data) {
var content = data.split('}');
async.map(content, function (item, callback) {
callback(null, JSON.parse(item));
}, function (err, content) {
console.log(content);
};
});
我认为您的JSON语法不好,您确定它是真实的文件,并且JSON.parse没有抛出任何错误吗?它不是有效的JSON,但它是一种常见的JSON流格式。这是否回答了您的问题?您不需要使用异步库来循环array@simon-p-r:当然可以,但现在已经晚了,我不确定这个词的语法是否正确array.map
/forEach
,而使用async,我确信脚本即使不是最优的,也是功能正常的。这与我在阅读问题标题时所寻找的方向有关。不幸的是,搜索}
的解决方案对于大多数结构来说太基本了