通过使用节点 js / javascript 删除嵌套键来存储数据
storing data by removing nested key by using node js / javascript
let json=[
{
metadata: { tags: [] },
sys: {
space: { sys: [Object] },
id: '4gSSbjCFEorYXqrgDIP2FA',
type: 'Entry',
},
fields: {
richTextEditor: { 'fn-US': [Object] },
short: { 'as-ds': 'hello default value' },
shortUrl: { 'en-US': 'www.google.com' },
shortSlugOption: { 'zh-cht': 'hello-default-value' },
mediaFileAssetLink: { 'ur-pk': [Array] },
mediaFileAssetGalary: { 'en-US': [Array] },
singleMediaImage: { 'cy-az-az': [Object] },
booleanField: { 'en-US': true },
locationField: { 'zh-mo': [Object] },
dateNTime: { 'sv': '2022-02-01T00:00+05:30' }
}
}
];
json.map((data) => {
console.log(data.fields);
/* fs.writeFile(
"./data.json",
JSON.stringify(data.fields, null, 4),
(err) => {
if (err) throw console.log(err.messages);
}
); */
});
我得到了这个对象,我编写了映射函数来获取我从输出中获得的所有字段。
我正在尝试存储在 JSON 文件中,但我不想以这种格式存储数据
预期格式
richTextEditor: [Object] ,
short: 'hello default value' ,
shortUrl: 'www.google.com' ,
shortSlugOption: 'hello-default-value' ,
mediaFileAssetLink: [Array] ,
mediaFileAssetGalary: [Array] ,
singleMediaImage: [Object] ,
booleanField: true ,
locationField: [Object] ,
dateNTime: '2022-02-01T00:00+05:30'
如何删除所有嵌套的 'fn-us','as-ds' n 并以预期格式存储值
您可以例如使用 Object.entries 和 Object.fromEntries() 结合 .map() 到 return 新结构:
let json=[ { metadata: { tags: [] }, sys: { space: { sys: [Object] }, id: '4gSSbjCFEorYXqrgDIP2FA', type: 'Entry', }, fields: { richTextEditor: { 'fn-US': [Object] }, short: { 'as-ds': 'hello default value' }, shortUrl: { 'en-US': 'www.google.com' }, shortSlugOption: { 'zh-cht': 'hello-default-value' }, mediaFileAssetLink: { 'ur-pk': [Array] }, mediaFileAssetGalary: { 'en-US': [Array] }, singleMediaImage: { 'cy-az-az': [Object] }, booleanField: { 'en-US': true }, locationField: { 'zh-mo': [Object] }, dateNTime: { 'sv': '2022-02-01T00:00+05:30' } } } ];
const res = json.map((data) => {
const fields = Object.fromEntries(Object.entries(data.fields).map(el=>(el[1]=Object.values(el[1])[0], el)))
return {...data, fields }
/* fs.writeFile(
"./data.json",
JSON.stringify(data.fields, null, 4),
(err) => {
if (err) throw console.log(err.messages);
}
); */
});
console.log(res);
let json=[
{
metadata: { tags: [] },
sys: {
space: { sys: [Object] },
id: '4gSSbjCFEorYXqrgDIP2FA',
type: 'Entry',
},
fields: {
richTextEditor: { 'fn-US': [Object] },
short: { 'as-ds': 'hello default value' },
shortUrl: { 'en-US': 'www.google.com' },
shortSlugOption: { 'zh-cht': 'hello-default-value' },
mediaFileAssetLink: { 'ur-pk': [Array] },
mediaFileAssetGalary: { 'en-US': [Array] },
singleMediaImage: { 'cy-az-az': [Object] },
booleanField: { 'en-US': true },
locationField: { 'zh-mo': [Object] },
dateNTime: { 'sv': '2022-02-01T00:00+05:30' }
}
}
];
json.map((data) => {
console.log(data.fields);
/* fs.writeFile(
"./data.json",
JSON.stringify(data.fields, null, 4),
(err) => {
if (err) throw console.log(err.messages);
}
); */
});
我得到了这个对象,我编写了映射函数来获取我从输出中获得的所有字段。
我正在尝试存储在 JSON 文件中,但我不想以这种格式存储数据
预期格式
richTextEditor: [Object] ,
short: 'hello default value' ,
shortUrl: 'www.google.com' ,
shortSlugOption: 'hello-default-value' ,
mediaFileAssetLink: [Array] ,
mediaFileAssetGalary: [Array] ,
singleMediaImage: [Object] ,
booleanField: true ,
locationField: [Object] ,
dateNTime: '2022-02-01T00:00+05:30'
如何删除所有嵌套的 'fn-us','as-ds' n 并以预期格式存储值
您可以例如使用 Object.entries 和 Object.fromEntries() 结合 .map() 到 return 新结构:
let json=[ { metadata: { tags: [] }, sys: { space: { sys: [Object] }, id: '4gSSbjCFEorYXqrgDIP2FA', type: 'Entry', }, fields: { richTextEditor: { 'fn-US': [Object] }, short: { 'as-ds': 'hello default value' }, shortUrl: { 'en-US': 'www.google.com' }, shortSlugOption: { 'zh-cht': 'hello-default-value' }, mediaFileAssetLink: { 'ur-pk': [Array] }, mediaFileAssetGalary: { 'en-US': [Array] }, singleMediaImage: { 'cy-az-az': [Object] }, booleanField: { 'en-US': true }, locationField: { 'zh-mo': [Object] }, dateNTime: { 'sv': '2022-02-01T00:00+05:30' } } } ];
const res = json.map((data) => {
const fields = Object.fromEntries(Object.entries(data.fields).map(el=>(el[1]=Object.values(el[1])[0], el)))
return {...data, fields }
/* fs.writeFile(
"./data.json",
JSON.stringify(data.fields, null, 4),
(err) => {
if (err) throw console.log(err.messages);
}
); */
});
console.log(res);