从JSON对象中删除$ - 可能吗?

时间:2017-06-30 10:58:37

标签: javascript json node.js

我有一个看起来像这样的对象:

{
    alphabet: {
        '$': {
            id: '11',
            href: 'abc'
        },
        mydata: [[Object]],
        status: ['22']
    }
}

是否可以以某种方式删除$,以便对象看起来像这样:

{
    alphabet: {
        id: '11',
        href: 'abc'
        mydata: [[Object]],
        status: ['22']
    }
}

我是JavaScript和Node JS的新手,并且正在努力解决这个问题。我试过了delete object.$;,但它没有做任何事情。我很确定我误解了这个功能。

任何帮助将不胜感激!

5 个答案:

答案 0 :(得分:2)

克隆$并使用object.assign合并克隆和原始对象



var obj = {
    alphabet: {
        '$': {
            id: '11',
            href: 'abc'
        },
        mydata: [''],
        status: ['22']
    }
};

var clone = obj.alphabet["$"];
delete obj.alphabet["$"];
Object.assign(obj,clone);
console.log(obj);




答案 1 :(得分:0)

您的意思是将$对象放入根对象中。

如果密钥名称始终为$,则可以获取$对象中的键值,如下所示:

let alphabet: {
  '$': {
    id: '11',
    href: 'abc'
  },
  mydata: [[Object]],
  status: ['22']
}

for (let key in alphabet['$']) {
  alphabet[key] = alphabet['$'][key]

  // maybe you should consider the duplicate key.
}

答案 2 :(得分:0)

这是一个函数,它将遍历对象中属性的属性并将其展平。

function flattenProp(obj, prop) {
  var key;

  for(key in obj[prop]) {
    obj[key] = obj[prop][key];
  }

  delete obj[prop];
};

下面是一个使用它的例子。



var data = {
    alphabet: {
        '$': {
            id: '11',
            href: 'abc'
        },
        mydata: [[Object]],
        status: ['22']
    }
};

console.log(data);

flattenProp(data.alphabet, '$');

console.log(data);

function flattenProp(obj, prop) {
  var key;
  
  for(key in obj[prop]) {
    obj[key] = obj[prop][key];
  }
  
  delete obj[prop];
};




答案 3 :(得分:0)

此解决方案非常简单 -

var obj = {
    alphabet: {
        '$': {
            id: '11',
            href: 'abc'
        },
        mydata: [[Object]],
        status: ['22']
    }
}

var temp = obj.alphabet.$

//copies the internal object to main one
for(var i=0;i<Object.keys(temp).length;i++) {
    obj.Object.keys(temp)[0] = temp[Object.keys(temp)[0]];
}

delete obj.alphabet.$ //remove the old object from it

答案 4 :(得分:0)

当然有可能。 假设您的数据变量(JSON)命名为&#34;数据&#34;:

var data = JSON.parse("your json string");

所以数据看起来像这样:

var data = {
    alphabet: {
        '$': {
            id: '11',
            href: 'abc'
        },
        mydata: [[Object]],
        status: ['22']
    }
}

我们只需迭代data.alphabet.$,将其所有属性存储到其父级(data.alphabet),然后删除data.alphabet.$

for(var propname in data.alphabet["$"]) {
   var propvalue = data.alphabet["$"][propname];

   data.alphabet[propname] = propvalue;
}

delete data.alphabet.$;

这是一个片段:

&#13;
&#13;
var data = JSON.parse(`{
    "alphabet": {
        "$": {
           "id": "11",
           "href": "abc"
        },
        "mydata": {},
        "status": ["22"]
    }
}`)

for(var propname in data.alphabet["$"]) {
   var propvalue = data.alphabet["$"][propname];
       
   data.alphabet[propname] = propvalue;
}
    
delete data.alphabet.$;

document.body.innerHTML = `<pre>${JSON.stringify(data, null, 4)}</pre>`
&#13;
&#13;
&#13;