我有一个对象作为REST服务器返回数据的一部分返回。它是项目对象的一部分。
(我无法控制REST服务器,因此无法更改收到的数据):
{
"Option:Color":"Red,Green,Blue,Orange",
"Option:Size":"Small,Medium,Large"
}
我想要最终得到的是对此的一些控制,以便在我的应用程序中选择产品时显示结果。它将以模态出现。我正在使用Marionette / Backbone / Underscore / JQuery等,但这更像是一个JavaScript问题。
我尝试了多种获取数据的方法但没有成功。我希望能够在嵌套数组中有选项,但我会接受其他建议......
基本上就是这种结构
var Color=('Red', 'Green', 'Blue', 'Orange')
var Size('Small', 'Medium', 'Large')
对象结构很好,只需要能够将其转换为数组并取出'Option'关键字
重要提一下,我不知道收到它们后可能会有什么不同的选项 - 选项之后的位:可能是任何形式的变化,颜色,大小,味道等。
答案 0 :(得分:2)
循环解析的JSON并在新对象上创建新键。这样您就不必自己创建var名称;它会自动为您完成,尽管它是新对象中的键。
var obj = {
"Option:Color":"Red,Green,Blue,Orange",
"Option:Size":"Small,Medium,Large"
}
function processObj() {
var newObj = {};
for (var k in obj) {
var key = k.split(':')[1].toLowerCase();
var values = obj[k].split(',');
newObj[key] = values;
}
return newObj;
}
var processedObj = processObj(obj);
for (var k in processedObj) {
console.log(k, processedObj[k])
// color ["Red", "Green", "Blue", "Orange"], size ["Small", "Medium", "Large"]
}
编辑:OP我在这里和jsfiddle中更新了代码,向您展示如何循环新对象以获取键/值。
答案 1 :(得分:1)
var json = {
"Option:Color":"Red,Green,Blue,Orange",
"Option:Size":"Small,Medium,Large"
};
var color = json['Option:Color'].split(',');
var size = json['Option:Size'].split(',');
答案 2 :(得分:1)
尝试此操作以获得解决方案,而无需将所有选项名称硬编码到代码中:
var x = {
"Option:Color":"Red,Green,Blue,Orange",
"Option:Size":"Small,Medium,Large"
};
var clean = {};
$.each(x, function(key, val){ //iterate over the options you have in your initial object
var optname = key.replace('Option:', ''); //remove the option marker
clean[optname] = val.split(","); //add an array to your object named like your option, splitted by comma
});
clean将包含您要创建的选项数组
编辑:好的,你如何获得对象属性的名称,如“color”,它们现在是新对象中的键?就像之前一样,基本上是这样的:$.each(clean, function(key, val){
//key is the name of your option here
//val is the array of properties for your option here
console.log(key, val);
});
当然我们再次坚持使用jQuery。 ;)