gpt4 book ai didi

javascript - 在 Node.js 中将 2 级 JSON 转换为多个 1 级 JSON

转载 作者:太空宇宙 更新时间:2023-11-04 01:56:04 25 4
gpt4 key购买 nike

我在 Node 中编写通用函数来解析 JSON 时遇到问题,如下所示:

{
"parserId": 1,
"filters": [
{
"filterName": "replaceTitle",
"regex": "..."
},
{
"filterName": "replaceRegion",
"regex": "..."
}
]}

像这样的多个JSON:

{ "parserId": 1, "filterName": "replaceTitle","regex": "..." },{ "parserId": 1, "filterName": "replaceRegion", "regex": "..."}

如果这个函数是通用的那就太好了,所以 JSON 中字段的名称是什么并不重要,只要它的构建方式相同即可。是否有任何 Node 包已经在这样做?感谢您的帮助!

最佳答案

您可以映射数组的每个项目,并将带有 parserId 的对象与数组的项目一起附加。

var object = { parserId: 1, filters: [{ filterName: "replaceTitle", regex: "..." }, { filterName: "replaceRegion", regex: "..." }] },
array = object.filters.map(o => Object.assign({ parserId: object.parserId }, o));

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

更通用的方法可能是检查属性是否是数组,然后循环该数组,或者将属性添加到公共(public)对象,这为所有新生成的对象保留相同的值。

稍后迭代数组并将内容添加到对象中。

无需指定属性(数组或值)即可工作。

function unnormalize(object) {
var common = {};

return Object
.keys(object)
.filter(k => Array.isArray(object[k]) || (common[k] = object[k], false))
.reduce((r, k) => (object[k].forEach((o, i) => Object.assign(r[i] = r[i] || Object.assign({}, common), o)), r), []);
}

var object = { parserId: 1, filters: [{ filterName: "replaceTitle", regex: "..." }, { filterName: "replaceRegion", regex: "..." }] };

console.log(unnormalize(object));
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 在 Node.js 中将 2 级 JSON 转换为多个 1 级 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47959508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com