Javascript - 在现有JSON字符串中操纵数组结构

时间:2016-02-09 09:46:19

标签: javascript json

我有一个简单的json,我想在其中操作数组结构和数据,如果有人建议我怎样才能使用javascript或xpaths。

目前的json: -

{
  "pimage": [
    {
      "limage": "http://images.bestbuy.com/BestBuy_US/images/products/7306/7306011_sb.jpg",
      "timage": "http://images.bestbuy.com/BestBuy_US/images/products/7306/7306011_s.gif",
      "mimage": "http://images.bestbuy.com/BestBuy_US/images/products/7306/7306011fp.gif",
      "lfimage": "http://img.bbystatic.com/BestBuy_US/images/products/7306/7306011_sa.jpg"
    }
  ]
}

预期: - 下面的limage键是常用的,当前json的urls值保持不变。

{
  "pimage": [
    {
      "limage": "http://images.bestbuy.com/BestBuy_US/images/products/7306/7306011_sb.jpg"
    },
    {
      "limage": "http://images.bestbuy.com/BestBuy_US/images/products/7306/7306011_s.gif"
    },
    {
      "limage": "http://images.bestbuy.com/BestBuy_US/images/products/7306/7306011_s.gif"
    },
    {
      "limage": "http://images.bestbuy.com/BestBuy_US/images/products/7306/7306011_s.gif"
    }
  ]
}

3 个答案:

答案 0 :(得分:1)

问题有点不清楚,但是这段代码会将你的对象变成你想要的形式:

var myObj = {
  "pimage": [
    {
      "limage": "http://images.bestbuy.com/BestBuy_US/images/products/7306/7306011_sb.jpg",
      "timage": "http://images.bestbuy.com/BestBuy_US/images/products/7306/7306011_s.gif",
      "mimage": "http://images.bestbuy.com/BestBuy_US/images/products/7306/7306011fp.gif",
      "lfimage": "http://img.bbystatic.com/BestBuy_US/images/products/7306/7306011_sa.jpg"
    }
  ]
}
var myFunc = function(obj) { 
  var keys = Object.keys(obj.pimage[0]);
  var newObj = {"pimage":[]};
  keys.forEach(function(k) {
    var newImg = {};
    newImg['limage'] = obj.pimage[0][k];
    newObj.pimage.push(newImg);
  });
  return newObj;
}

console.log(myFunc(myObj));

有了更多信息,myFunc()函数可以更有力地制作。

答案 1 :(得分:0)

试试这个:

function Parse(ur_obj) {
   var iterate = ur_obj.pimage[0];
   var result = [];
   for(var x in iterate) {
      result.push({x:iterate[x]});
   }
   ur_obj.pimage = result;
   return ur_obj;
}

答案 2 :(得分:0)

此解决方案将每个键/值对映射到一个单独的对象。

var obj = {
        "pimage": [{
            "limage": "http://images.bestbuy.com/BestBuy_US/images/products/7306/7306011_sb.jpg",
            "timage": "http://images.bestbuy.com/BestBuy_US/images/products/7306/7306011_s.gif",
            "mimage": "http://images.bestbuy.com/BestBuy_US/images/products/7306/7306011fp.gif",
            "lfimage": "http://img.bbystatic.com/BestBuy_US/images/products/7306/7306011_sa.jpg"
        }]
    };

obj.pimage = Object.keys(obj.pimage[0]).map(function (k) {
    var o = {};
    o[k] = obj.pimage[0][k];
    return o;
});

document.write('<pre>' + JSON.stringify(obj, 0, 4) + '</pre>');