繁体   English   中英

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

[英]Javascript - Manipulate Array structure inside existing JSON string

我有一个简单的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的url值保持原样。

{
  "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"
    }
  ]
}

问题似乎还不清楚,但是这段代码会将您的对象变成您想要的形式:

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()函数。

尝试这个 :

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;
}

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

 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>'); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM