JSON数组到JS对象数组中

时间:2015-04-02 14:42:08

标签: javascript jquery arrays json javascript-objects

我真的很讨厌为我做这件事'问题,但我完全失去了。我想我不会得到JSON。所以这是我的JSON的一个例子:

"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()获取jQuery和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);

});

3 个答案:

答案 0 :(得分:1)

这可能就是你所追求的:

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

答案 1 :(得分:1)

使用开源项目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"
        }
    ]

答案 2 :(得分:0)

首先,您的JSon数据无效。

将此数据设置为Json的正确格式如下:

{
    "max": "10",
    "min": "0",
    "attributes": [
        {
            "attributeName": "Fortitude",
            "attributeColor": "#B7B7B7"
        },
        {
            "attributeName": "Vigor",
            "attributeColor": "#D5A6BD"
        },
        {
            "attributeName": "Celerity",
            "attributeColor": "#B4A7D6"
        }
    ]
}

而且,在这种情况下,我强烈建议使用Jspath。 Jspath允许您在JSon数据上执行XPath表达式。