将 JSON 值保存在 Javascript/node js 中提供的文件夹中
save JSON value in provided folder in Javascript / node js
let obj={
print:{
"2343192u4":{
id:"01",
name:"linux file",
location:"System config"
},
"23438ufsdjh8":{
id:"02",
name:"windows file",
location:"System config"
}
},
hardware:{
"9058t05":{
no:"ct-01",
refrence:"down-tPO-01"
}
},
stack:{
"345t5fdfve":{
option1:"prefer first lost",
failure:"run backup"
}
},
backupdir:{
"cjksder8982w":{
files:"config file.json",
execute:"run after failure"
}
}
};
let Array=[{
filepath:"print"
},
{
filepath:"hardware"
},
{
filepath:"stack"
},
{
filepath:"backupdir"
},
];
Array.map((file)=>{
//console.log(file.filepath)
Object.keys(obj).forEach((key)=>{
if(key===file.filepath){
// fs.writeFile(path.join(__dirname,file.filepath,"system.json"), JSON.stringify(Object.values(obj)[0], null, 4))
console.log("yes");
}
})
});
我正在尝试从 obj
JSON 对象中获取密钥并将其与数组文件路径进行比较,以便我可以将值推送到创建的 json 文件
我在这里通过使用 fs 尝试创建从数组中获得的文件夹
fs.writeFile(path.join(__dirname,file.filepath,"system.json"));
我在其中创建了文件夹和文件 system.json,我正在尝试比较对象 json 中的键和数组中的文件路径
并尝试像这样
print/system.json
{
"2343192u4":{
id:"01",
name:"linux file",
location:"System config"
},
"23438ufsdjh8":{
id:"02",
name:"windows file",
location:"System config"
}
}
hardware/system.json
{
"9058t05":{
no:"ct-01",
refrence:"down-tPO-01"
}
}
等等...
但问题是我这样做的时候
JSON.stringify(Object.values(obj)[0], null, 4)
我在每个文件中得到相同的输出
print/system.json
{
"2343192u4":{
id:"01",
name:"linux file",
location:"System config"
},
"23438ufsdjh8":{
id:"02",
name:"windows file",
location:"System config"
}
}
hardware/system.json
{
"2343192u4":{
id:"01",
name:"linux file",
location:"System config"
},
"23438ufsdjh8":{
id:"02",
name:"windows file",
location:"System config"
}
}
等等...
这里 print hardware stack backupdir
总是会被更改,并且还有多个文件,因为这是系统随机生成的名称,这就是为什么我必须比较和对象中的密钥并创建这个名称的目录
如何将它们推送到具有各自值的不同文件夹中
尝试改变
fs.writeFileSync(path.join(__dirname,file.filepath,"system.json"),
JSON.stringify(Object.values(obj)[0], null, 4))
(仅查看 obj
中的第一个 属性 值)到
fs.writeFileSync(path.join(__dirname,file.filepath,"system.json"),
JSON.stringify(obj[key], null, 4))
使用从正在处理的 Array
条目中获得的 key
值在 obj
中查找 属性 对象。
在 Object.keys(obj).forEach((key)=>{
中使用 forEach
可防止在找到匹配的文件路径时停止搜索。另一种选择是使用 for of
循环,如果找到文件名,该循环就会中断:
Array.forEach((file)=>{
for( let key of Object.keys(obj)) {
if(key===file.filepath) {
fs.writeFileSync(path.join(__dirname,file.filepath,"system.json"),
JSON.stringify(obj[key], null, 4));
break;
}
}
});
此外:避免使用 Array
等全局构造函数的名称作为变量名 - 这是一个等待发生的错误:-)
let obj={
print:{
"2343192u4":{
id:"01",
name:"linux file",
location:"System config"
},
"23438ufsdjh8":{
id:"02",
name:"windows file",
location:"System config"
}
},
hardware:{
"9058t05":{
no:"ct-01",
refrence:"down-tPO-01"
}
},
stack:{
"345t5fdfve":{
option1:"prefer first lost",
failure:"run backup"
}
},
backupdir:{
"cjksder8982w":{
files:"config file.json",
execute:"run after failure"
}
}
};
let Array=[{
filepath:"print"
},
{
filepath:"hardware"
},
{
filepath:"stack"
},
{
filepath:"backupdir"
},
];
Array.map((file)=>{
//console.log(file.filepath)
Object.keys(obj).forEach((key)=>{
if(key===file.filepath){
// fs.writeFile(path.join(__dirname,file.filepath,"system.json"), JSON.stringify(Object.values(obj)[0], null, 4))
console.log("yes");
}
})
});
我正在尝试从 obj
JSON 对象中获取密钥并将其与数组文件路径进行比较,以便我可以将值推送到创建的 json 文件
我在这里通过使用 fs 尝试创建从数组中获得的文件夹
fs.writeFile(path.join(__dirname,file.filepath,"system.json"));
我在其中创建了文件夹和文件 system.json,我正在尝试比较对象 json 中的键和数组中的文件路径 并尝试像这样
print/system.json
{
"2343192u4":{
id:"01",
name:"linux file",
location:"System config"
},
"23438ufsdjh8":{
id:"02",
name:"windows file",
location:"System config"
}
}
hardware/system.json
{
"9058t05":{
no:"ct-01",
refrence:"down-tPO-01"
}
}
等等...
但问题是我这样做的时候
JSON.stringify(Object.values(obj)[0], null, 4)
我在每个文件中得到相同的输出
print/system.json
{
"2343192u4":{
id:"01",
name:"linux file",
location:"System config"
},
"23438ufsdjh8":{
id:"02",
name:"windows file",
location:"System config"
}
}
hardware/system.json
{
"2343192u4":{
id:"01",
name:"linux file",
location:"System config"
},
"23438ufsdjh8":{
id:"02",
name:"windows file",
location:"System config"
}
}
等等...
这里 print hardware stack backupdir
总是会被更改,并且还有多个文件,因为这是系统随机生成的名称,这就是为什么我必须比较和对象中的密钥并创建这个名称的目录
如何将它们推送到具有各自值的不同文件夹中
尝试改变
fs.writeFileSync(path.join(__dirname,file.filepath,"system.json"),
JSON.stringify(Object.values(obj)[0], null, 4))
(仅查看 obj
中的第一个 属性 值)到
fs.writeFileSync(path.join(__dirname,file.filepath,"system.json"),
JSON.stringify(obj[key], null, 4))
使用从正在处理的 Array
条目中获得的 key
值在 obj
中查找 属性 对象。
在 Object.keys(obj).forEach((key)=>{
中使用 forEach
可防止在找到匹配的文件路径时停止搜索。另一种选择是使用 for of
循环,如果找到文件名,该循环就会中断:
Array.forEach((file)=>{
for( let key of Object.keys(obj)) {
if(key===file.filepath) {
fs.writeFileSync(path.join(__dirname,file.filepath,"system.json"),
JSON.stringify(obj[key], null, 4));
break;
}
}
});
此外:避免使用 Array
等全局构造函数的名称作为变量名 - 这是一个等待发生的错误:-)