Javascript Json对象到对象,键为虚线字符串

Javascript Json对象到对象,键为虚线字符串,javascript,json,parsing,object,Javascript,Json,Parsing,Object,我需要解析Json响应 { "product": "office", "info": { "brand": [ "1brand" ], "detail": { "number": { "min": 1, "max": 5 }, } } }; 使用虚线字符串键创建对象 {

我需要解析Json响应

{
   "product": "office",
   "info": 
   {
      "brand": 
      [
        "1brand"
      ],
      "detail": 
      {
        "number": 
        {
            "min": 1,
            "max": 5
         },
       }
   }
};
使用虚线字符串键创建对象

{
    "product" : "office",
    "info.brand" : ["1brand"],
    "info.detail.number.min" : 1,
    "info.detail.number.max" : 5
}

嵌套和相邻对象的数量未知。解决方案应该是带有一个参数的函数-响应对象,并返回带有点字符串键的新对象。

您可以对每一层嵌套对象采用递归方法,收集键,并将它们用于新对象中最后找到的值

函数flatKeysobject{ 功能iterpart,键{ Object.keyspart.foreachk函数{ var allKeys=keys.concatk; 如果部分[k]&!Array.isArraypart[k]&&typeof部分[k]=='object'{ 返回iterpart[k],所有密钥; } 平面[allkey.join'.]=部分[k]; }; } var flat={}; iterobject,[]; 返回平面; } var object={product:office,info:{brand:[1brand],detail:{number:{min:1,max:5}};
console.logflatKeysobject 您可以使用reduce方法创建递归函数

let data={product:office,info:{brand:[1brand],detail:{number:{min:1,max:5}}} 函数parseinput,res={},prev={ 返回Object.keysinput.reducer,e=>{ 让key=prev+prev&&'.+e,val=input[e] 如果typeof val==object&&!Array.isArrayval parseval,res,key else r[键]=输入[e] 返回r; },res } 让result=parsedata
console.logresultSo您尝试了什么?解决方案应该是。。。你什么都不尝试,似乎你在命令我们交付代码。和-1。可能是重复的。我用Object.key尝试了一些算法,找到了一些参数更多的解决方案,但似乎没有什么适合我的问题@Bhojendraurauniyaroh,这是一个很好的解决方案。我用Object.key尝试了几乎所有的方法,但我无法建立正确的递归算法。非常感谢。