json对象分成两个json对象

时间:2014-08-10 10:59:14

标签: javascript json

我有这个JSON对象

{1: "test projekt", 4: "Second Project", 
 5: "Third Project", 6: "Fourth Project", 
 7: "5th one", 8: "6th one dude", 
 uhash: "7021a11332508b6e30d3b6d3e95180398228b0e4010fc3f05db81e80"}

我想把它分成:

{1: "test projekt", 4: "Second Project", 
 5: "Third Project", 6: "Fourth Project", 
 7: "5th one", 8: "6th one dude"}

{uhash: "7021a11332508b6e30d3b6d3e95180398228b0e4010fc3f05db81e80"}

我怎么能在js中做到这一点?

4 个答案:

答案 0 :(得分:2)

这样的事情?

var secondObj = {uhash: firstObj.uhash};
delete firstObj.uhash;

对于更复杂的东西,你可以使用下划线:underscorejs。看看groupBy或map。取决于你究竟需要什么。

答案 1 :(得分:1)

for ... in循环将迭代对象键。请务必使用hasOwnProperty方法对其进行限制,否则for ... in将找到该对象的所有继承键。一旦你可以迭代对象,你需要做的就是检查键并填充另外两个对象。

var numbers = {},
    uhash   = {},
    prop    = '';

for (prop in json) {
    if (json.hasOwnProperty(prop)) {

        if (!isNaN(prop)) {
            numbers[prop] = json[prop];
        } else {
            uhash[prop] = json[prop];
        }

    }
}

答案 2 :(得分:1)

操作JSON的最简单方法是将其解析为对象,操纵对象,然后从对象创建JSON:

var o = JSON.parse(json);

var o2 = { uhash: o.uhash };
delete o.uhash;

var json1 = JSON.stringify(o);
var json2 = JSON.stringify(o2);

注意:较旧的浏览器不支持JSON object,例如IE 7。

答案 3 :(得分:1)

这可能会有所帮助

function popAttributeFromData (attrs, data) {
  for (var key in data) {
    if(key === attrs) {
      var result = {
        attrs: data[attrs]
      };
      delete data[attrs];
      return result;
    }
  }
  return null;
}

它从数据中迭代keys直到密钥与传递的参数attrs匹配。

结果如下 enter image description here

PLAYGROUND

相关问题