我有一个非常大的json文件,并且该json文件内部是一个数组。我想使用JavaScript将json作为参数,通过json解析并仅从中获取某些元素并将其放入新的json文件中,下面是我的意思的一个示例:
{
"contextType": "Account",
"preferences": null,
"custodianCode": null,
"data": [{
"id": "0",
"account": "11111111",
"field2": true,
"field3": false,
"field4": "BROK",
"field5": "Broker",
"field6": "1",
"field7": "Cash"
},{
"id": "1",
"account": "222222222",
"field2": true,
"field3": false,
"field4": "BROK",
"field5": "Broker",
"field6": "1",
"field7": "Cash"
}]
}
我想从中获取并获得像这样的新json
{
"newArray": [{
"id": "0",
"account": "11111111",
"field2": true,
"field3": false,
"field4": "BROK",
"field6": "1"
},{
"id": "0",
"account": "222222222",
"field2": true,
"field3": false,
"field4": "BROK",
"field6": "1"
}]
}
此外,该文件是我的计算机的本地文件,也可以在本地输出,我正在尝试使用node.js和JavaScript这是我到目前为止所拥有的
var json = require('./simple.json');
var keeperFields = ["id", "account", "field2", "field3", "field4", "field6"];
var newJSON = {newArray: [] };
var i;
var fields;
for (i = 0; i < keeperFields.length; i++) {
for (fields in json) {
if (json.hasOwnProperty(keeperFields[i])) {
newJSON.newArray.push(keeperFields[i]);
}
}
}
console.log(newJSON);
这只是一个小例子,真正的json文件很庞大,有数千行。任何帮助或建议表示赞赏!
这个当前的解决方案是给我一个{newArray:[]}的控制台日志,而不是上面的预期结果
答案 0 :(得分:0)
你走了。你需要从json的.data字段开始
json = {
"contextType": "Account",
"preferences": null,
"custodianCode": null,
"data": [{
"id": "0",
"account": "11111111",
"field2": true,
"field3": false,
"field4": "BROK",
"field5": "Broker",
"field6": "1",
"field7": "Cash"
},{
"id": "1",
"account": "222222222",
"field2": true,
"field3": false,
"field4": "BROK",
"field5": "Broker",
"field6": "1",
"field7": "Cash"
}]
}
var keeperFields = ["id", "account", "field2", "field3", "field4", "field6"];
var newJSON = {newArray: [] };
json.data.forEach(function(obj) {
var newObj = {};
for (var i = 0; i < keeperFields.length; i++) {
if (obj.hasOwnProperty(keeperFields[i])) {
newObj[keeperFields[i]] = obj[keeperFields[i]];
}
}
newJSON.newArray.push(newObj);
});
document.write(JSON.stringify(newJSON));
&#13;
答案 1 :(得分:0)
如果您知道输入文件的格式是标准化的,则可以更轻松地完成此操作。这样的事情应该有用......
// assuming you loaded your data into a json object named json and that it contains a field called "data" that contains a list of the records you want to inject into the new array.
var json = require('./simple.json');
var keeperFields = ["id", "account", "field2", "field3", "field4", "field6"];
var newJSON = {
newArray: []
};
// put the list of records into a convenience var.
var records = json.data;
// loop through the records
for (var recordId in data) {
// Grab the current record
var record = records[recordId];
// Create a new record
var newRecord = [];
// Loop through the keeperfields. Since they are named you can create fields in the new record using the same field names
for (var field in keeperFields) {
// Copy record data from source record to new record
newRecord[field] = record[field];
}
// append the new record to the new data set
newJSON.newArray.push(newRecord);
}
&#13;