![](/img/trans.png)
[英]How to replace opening and closing curly braces by square brackets and remove labels on a json array in Java script ES6
[英]How to add [] opening and closing square brackets around a JSON in Javascript?
const _ = require('lodash');
let dataGroupedByMndtId = _.groupBy(
_.orderBy(data.Entries, 'mndtId'), 'mndtId'
);
let transactionsPerEntry = [];
_
.map(dataGroupedByMndtId, (transactions, index) => {
// verticalBarChartData.push(`{ "name": "${index}"}`);
_.map(
transactions, (transaction, index) => {
transactionsPerEntry.push(`{ "name": "${transaction.date}", "value": "${transaction.amount}"}`);
}
);
verticalBarChartData.push(`{ "name": "${index}", "series": [${transactionsPerEntry}]}`);
transactionsPerEntry = [];
});
outputJsonFile = 'generated.json';
outputJsonPath = path.join(__dirname, 'data', outputJsonFile);
try {
fs.writeFileSync(outputJsonPath, verticalBarChartData, { mode: 0o755 });
} catch (err) {
// An error occurred
console.error(err);
}
{
"name": "1/0003/1",
"series": [{
"name": "2019-04-05T00:00:00Z",
"value": 20.87
}, {
"name": "2019-03-03T00:00:00Z",
"value": 5.74
}]
}, {
"name": "1/0004/1",
"series": [{
"name": "2019-04-03T00:00:00Z",
"value": 15.7
}, {
"name": "2019-03-26T00:00:00Z",
"value": 0.13
}]
}
我怎么能添加封闭的方括号?
我试过几种方法:
添加括号(stringify)并解析字符串(JSON.parse)但方括号消失
在verticalBarChart变量周围添加[]
推一个空项目
谢谢您的帮助
我强烈建议不要手工制作JSON。 相反,构建结构然后让JSON.stringify
完成工作。
你也在滥用_.map
。 如果您没有从其回调中返回值并且您没有使用_.map
的返回值,则_.map
是错误的工具。 你会使用_.each
代替。 (或者使用ES5的forEach
。)或者当然,从回调中返回一些内容并使用返回的结果,因为您似乎正在进行映射操作。
这是我认为你想要做的事情:
const _ = require('lodash');
let dataGroupedByMndtId = _.groupBy(
_.orderBy(data.Entries, 'mndtId'), 'mndtId'
);
let verticalBarChartData = _.map(dataGroupedByMndtId, (transactions, index) => ({
name: String(index), // You seem to want it to be a string, not a number
series: _.map(transactions, (transaction, index) => ({
name: transaction.date, // May need String() around that
value: transaction.amount // And may need String() here too, if you really want a string
}))
}));
outputJsonFile = 'generated.json';
outputJsonPath = path.join(__dirname, 'data', outputJsonFile);
try {
fs.writeFileSync(outputJsonPath, JSON.stringify(verticalBarChartData), { mode: 0o755 });
} catch (err) {
// An error occurred
console.error(err);
}
我已经在那里使用了_.map
,因为你可以轻松使用ES5的Array.prototype.map
。
另一个解决方案是用[B]替换行[A],但这比@tj-crowder '解决方案更不方便
[A] verticalBarChartData.push( { "name": "${index}", "series": [${transactionsPerEntry}]}
);
[B] verticalBarChartData.push( JSON.parse ( { "name": "${index}", "series": [${transactionsPerEntry}]}
));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.