Javascript 如何将嵌套JSON对象的所有键值移动到Node.js中的父对象
我有一个JSON对象,第一层有3个嵌套对象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"}" } 现在,使
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字符串?