Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将嵌套JSON对象的所有键值移动到Node.js中的父对象_Javascript_Json_Node.js - Fatal编程技术网

Javascript 如何将嵌套JSON对象的所有键值移动到Node.js中的父对象

Javascript 如何将嵌套JSON对象的所有键值移动到Node.js中的父对象,javascript,json,node.js,Javascript,Json,Node.js,我有一个JSON对象,第一层有3个嵌套对象 data{"key1":"value1", "key2":"value2", "section1":"{"key1_1":"value1_1", "key1_2":"value1_2"}", "section2":"{"key2_1":"value2_1", "key2_2":"value2_2", "key2_3":"value2_3"}", "section3":"{"key3_1":"value3_1"}" } 现在,使

我有一个JSON对象,第一层有3个嵌套对象

data{"key1":"value1", "key2":"value2",
    "section1":"{"key1_1":"value1_1", "key1_2":"value1_2"}",
    "section2":"{"key2_1":"value2_1", "key2_2":"value2_2", "key2_3":"value2_3"}",
    "section3":"{"key3_1":"value3_1"}"
}
现在,使用NODE.JS,我需要将所有键值从嵌套对象移动到父对象,所有键值都位于根级别,如下所示:

data{
"key1":"value1", "key2":"value2","key1_1":"value1_1", "key1_2":"value1_2", "key2_1":"value2_1", "key2_2":"value2_2", "key2_3":"value2_3", "key3_1":"value3_1"
}

使用适当的对象,可以迭代键,如果找到对象,则使用找到的对象的内容再次调用函数

功能平面(源、目标){
Object.keys(源).forEach(函数(k){
if(源[k]!==null和源[k]的类型==='object'){
平坦(源[k],目标);
返回;
}
目标[k]=源[k];
});
}
var数据={“key1”:“value1”,“key2”:“value2”,“section1”:{“key1_1”:“value1_1”,“key1_2”:“value1_2”},“section2”:“value2_1”,“key2_2”:“value2_2”,“key2_3”:“value2_3”},“section3”:{“key3_1”:“value3_1”},
flatObject={};
平面(数据,平面对象);

console.log(flatObject)您可以递归遍历数据并将其添加到空映射:

var数据={
“键1”:“值1”,“键2”:“值2”,
“第1节:{“键1_1”:“值1_1”,“键1_2”:“值1_2”},
“第2节:{“键2_1”:“值2_1”,“键2_2”:“值2_2”,“键2_3”:“值2_3”},
“第3节”:{“键3_1”:“值3_1”}
}
var fill=功能(进位,obj){
for(obj中的var键){
如果(!obj.hasOwnProperty(键)){
继续;
}
if(对象的obj[键]实例){
填充(携带,obj[钥匙]);
}
否则{
进位[键]=对象[键];
}
}
返运;
}
变量输出={}
填充(输出、数据);

控制台日志(输出)您发布的内容既不是有效的JSON,也不是有效的Javascript对象。不幸的是,数据与此完全相同。。。带“{”。这些是节中的JSON字符串。您如何知道哪一个包含序列化数据?源所有者保证me@HassanNaqvi,我不明白哪个属性包含json字符串?