Javascript 如何将嵌套JSON数据结构展平为具有键值对的对象

Javascript 如何将嵌套JSON数据结构展平为具有键值对的对象,javascript,json,Javascript,Json,来自源代码的字符串来自JSON对象中的片段JSON对象。我想将此JSON结构转换为平面JSON结构 { "nest": { "a": { "b": { "h": { "i": { "all.css": "1", "j": { "

来自源代码的字符串来自JSON对象中的片段JSON对象。我想将此JSON结构转换为平面JSON结构

{
    "nest": {
        "a": {
            "b": {
                "h": {
                    "i": {
                        "all.css": "1",
                        "j": {
                            "k": {
                                "l": {
                                    "lr.png": "2",
                                    "c.png": "3"
                                },
                                ".png": "4"
                            }
                        }
                    }
                }
            }
        }
    }
}
我试图这么做,但我只能得到一个键值对, 我想要的是
{“abhiall.css”:“1”,“abhijklr.png”:“2”,“abhijklc.png”:“3”
。等等。
谢谢

您可以对嵌套对象使用迭代和递归方法

函数展平(对象、目标、路径){
路径=路径| |“”;
Object.keys(对象).forEach(函数(键){
if(对象[键]&&typeof对象[键]==“对象”){
展平(对象[关键点]、目标、路径+关键点);
返回;
}
目标[路径+键]=对象[键];
});
}
var data={nest:{a:{b:{h:{i:{“all.css”:“1”,j:{k:{l:{“lr.png”:“2”,“c.png”:“3”},.png”:“4”}},
平坦={};
展平(data.nest,flat);
console.log(平面);

。作为控制台包装{max height:100%!important;top:0;}
您可以使用递归函数返回所需的结果

var obj={“nest”:{“a”:{“b”:{“h”:{“i”:{“all.css”:“1”,“j”:{“k”:{“l”:{“lr.png”:“2”,“c.png”:“3”},.png”:“4”}
功能平面(数据,c){
var result={}
用于(数据中的var i){
如果(数据类型[i]=“字符串”)结果[c+i]=数据[i]
if(数据类型[i]=“object”)result=object.assign(结果,平面(数据[i],c+=i))
}
返回结果
}

log(flat(obj.nest.)
对于对象数组,我执行了以下操作 注意:确保传入的对象数组至少为n>0

flatten(objects, target, path) {
let me = this;    
let retArray = [];
for(let x=0; x < objects.length; x++) {

  let object = objects[x];
  path = path || '';
  target={};

  target = me.flattenHelper(object, target, path);

  retArray.push(target);
}
return retArray;}
使用此功能:

const flattobject=(对象,前缀=“”)=>
对象键(obj).reduce((acc,k)=>{
const pre=prefix.length?前缀:“”;
if(对象类型[k]=='object')object.assign(acc,扁平化对象(对象类型[k],前置+k));
else acc[pre+k]=obj[k];
返回acc;
}, {});
log(flattobject({“nest”:{“a”:{“b”:{“h”:{“i”:{“all.css”:“1”,“j”:{“k”:{“l”:{“lr.png”:“2”,“c.png”:“3”},.png”:“4”}));
.as控制台{背景色:黑色!重要;颜色:石灰;}

.as console wrapper{max height:100%!important;top:0;}
显示您的代码,我们将帮助您修复它。没有它,我们无法帮助您。这感觉更像是一个作业问题,而不是其他任何问题。如果是这样,请在开始编码之前尝试在纸上解决它,这样更容易发现问题。显示您如何找到第一对。
flattenHelper(object, target, path){
let me = this;
Object.keys(object).forEach(function (key) {
  console.log("key : "+ key + " : object : " +  (object[key] && typeof object[key] === 'object') + " path : " + path);
  if (object[key] && typeof object[key] === 'object') {
      me.flattenHelper(object[key], target, path + key);
  }
  target[path + key] = object[key];
  console.log(target);
});
return target;}