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() 函数可以更健壮地制作。
此解决方案将每个键/值对映射到一个单独的对象。
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;
}
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 如何确定javascript已经完成了某些操作.ios上的
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 从JavaScript访问struts操作中的属性
- fluxxor向一个flux实例添加一组以上的操作
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 操作放置在画布上的元素之间的连接
- 使用“+="操作人员
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- Jquery未定义函数正在停止其他操作
- 如何操作iframe之外的元素
- javascript对象操作:根据指定条件选择属性
- jQuery:暂停按钮可以暂停所有其他操作
- 用于选择/文本框操作的JavaScript
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- 通过javascript操作图像,非常简单
- 将文本框中的值用于按钮窗体操作上的变量
- 当通过AJAX调用时,控制器操作不会执行
- 多于两个操作数的OR操作