JSON数组到JS对象数组
我真的很讨厌'为我做这个'的问题,但我完全丧失。我想我只是没有得到JSON。因此,这里是我的JSON的例子:JSON数组到JS对象数组
"max":"10",
"min":"0",
"attributes":[
{
"attributeName":"Fortitude",
"attributeColor":"#B7B7B7"
},
{
"attributeName":"Vigor",
"attributeColor":"#D5A6BD"
},
{
"attributeName":"Celerity",
"attributeColor":"#B4A7D6"
}
]
这是外部的,我想抓住它,然后设置一个js变量作为属性对象的数组。所以,如果在JS我设置:
var attributes = [];
attributes = whatEverNeedsToGoHere;
然后我遍历该变量我可以这样做:
console.log(attributes[0].attributeName);
并获得“坚韧”。我知道如何使用$ .getJSON()获取JSON和jQuery;但我不知道要将属性数组转换为对象数组需要发生什么。
更新:我现在正在调用JSON。
var attributesData = $.getJSON("jsonDB/attributes.js", function(data){
var thisAttribute = {"attributeName":String(data[i].attributeName),"attributeColor":String(data[i].attributeColor)};
attributes.push(thisAttribute);
console.log(attributes.attributeName);
});
这可能是你所追求的:
var attributes;
$.getJSON("jsonDB/attributes.js", function(data){
attributes = data.attributes;
console.log(attributes);
});
您可以测试它here。我已经掐灭getJSON
为了这个目的:
function getJSON(url, callbackfn){
var data = {
"max":"10",
"min":"0",
"attributes":[
{
"attributeName":"Fortitude",
"attributeColor":"#B7B7B7"
},
{
"attributeName":"Vigor",
"attributeColor":"#D5A6BD"
},
{
"attributeName":"Celerity",
"attributeColor":"#B4A7D6"
}
]
}
callbackfn(data);
}
var attributes;
getJSON("jsonDB/attributes.js", function(data){
attributes = data.attributes;
console.log(attributes);
});
我知道它是简单的。 Seamus ...我...我爱你。 – henonChesser 2015-04-02 15:16:10
首先,你的JSon数据是无效的。
此数据被设置为JSON正确的格式如下:
{
"max": "10",
"min": "0",
"attributes": [
{
"attributeName": "Fortitude",
"attributeColor": "#B7B7B7"
},
{
"attributeName": "Vigor",
"attributeColor": "#D5A6BD"
},
{
"attributeName": "Celerity",
"attributeColor": "#B4A7D6"
}
]
}
而且,在这种情况下,我非常建议使用Jspath。 Jspath允许您在JSon数据上执行XPath表达式。
我会研究一下,它让我想起了JSON的查询引擎。但是,在JS或jQuery中没有原生的方法吗? – henonChesser 2015-04-02 14:54:07
对于这个小的JSON数据包来说,整个库真的很重要? – 2015-04-02 14:59:32
使用开源项目jinqJs你可以做这样的一条线
var data = {"max":"10",
"min":"0",
"attributes":[
{
"attributeName":"Fortitude",
"attributeColor":"#B7B7B7"
},
{
"attributeName":"Vigor",
"attributeColor":"#D5A6BD"
},
{
"attributeName":"Celerity",
"attributeColor":"#B4A7D6"
}
]
}
var result = jinqJs().from(data).select('attributes');
document.body.innerHTML += '<pre>' + JSON.stringify(result, null, 4) + '</pre>';
<script src="https://rawgit.com/fordth/jinqJs/master/jinqjs.js"></script>
。
var attributes = jinqJs().from('http://..some json url').select('attributes');
这将返回下面的集合:
[
{
"attributeName":"Fortitude",
"attributeColor":"#B7B7B7"
},
{
"attributeName":"Vigor",
"attributeColor":"#D5A6BD"
},
{
"attributeName":"Celerity",
"attributeColor":"#B4A7D6"
}
]
“这是外部的,我想抓住它” - 哪里是你的Ajax调用,这是否? – 2015-04-02 14:43:42