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

Javascript - Manipulate Array structure inside existing JSON string

本文关键字:操作 操作数 数组 结构 字符串 JSON Javascript      更新时间:2023-09-26

我有一个简单的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() 函数可以更健壮地制作。

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

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

试试这个:

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