将json转换为嵌套JavaScript对象

将json转换为嵌套JavaScript对象,javascript,json,Javascript,Json,我有一个jsonint文件,其中包含以下任何项目: 输入JSON 输出 这是我所能做到的: newData = {}; Object.keys(data).forEach(item => { const splitData = item.split('.'); splitData.forEach((detail, index) => { if(index === 0 && !newData[detail]) newData[detail

我有一个json
int
文件,其中包含以下任何项目:

输入JSON 输出 这是我所能做到的:

newData = {};
Object.keys(data).forEach(item => {
    const splitData = item.split('.');
    splitData.forEach((detail, index) => {
        if(index === 0 && !newData[detail]) newData[detail] = {};
    })
});
console.info(newData)

我想采用
输入
并使其看起来像
输出

您可以在对象条目上使用一个
forEach
循环,然后在
内部拆分每个键。之后,您可以对该键数组使用
reduce
方法来构建嵌套对象

const obj={
“action.button.submit”:“submit”,
“操作.按钮.提交”:“提交”,
“buttons.common.add”:“add”,
“按钮.常用.重置”:“重置”,
“constants.bom.conditional.or.mandatory.conditional”:“conditional”,
“constants.bom.conditional.or.mandatory.mandatory”:“mandatory”
}
常数res={}
Object.entries(obj.forEach)([key,value])=>{
键。拆分('.')。减少((r,e,i,a)=>{
返回r[e]| |(r[e]=(a[i+1]?{}:value))
},res)
})

console.log(res)
您必须递归地深入到结果对象中:

function parse(obj) {
  const root = {};

  for(const [key, value] of Object.entries(obj)) {
    const parts = key.split(".");
    const parent = parts.slice(0, -1).reduce((acc, part) => acc[part] || (acc[part] = {}), root);
    parent[parts.pop()] = value;
  }

  return root;
}

你的问题是什么?谢谢你花时间写这个。我还看到它有两张赞成票,所以不仅仅是你。虽然我认为标题清楚地表明了我的目标。我将更新问题:)做JS已经很长时间了,在过去的几个月里做得不多,已经无法处理这个简单的问题thing@Jamie哈伯,这不太简单
newData = {};
Object.keys(data).forEach(item => {
    const splitData = item.split('.');
    splitData.forEach((detail, index) => {
        if(index === 0 && !newData[detail]) newData[detail] = {};
    })
});
console.info(newData)
function parse(obj) {
  const root = {};

  for(const [key, value] of Object.entries(obj)) {
    const parts = key.split(".");
    const parent = parts.slice(0, -1).reduce((acc, part) => acc[part] || (acc[part] = {}), root);
    parent[parts.pop()] = value;
  }

  return root;
}