使用JavaScript处理JSON数据

时间:2015-04-03 22:23:10

标签: javascript jquery json

任何人都可以告诉我如何使用JavaScript访问此JSON数据?我尝试了$.each循环,尝试使用[0]进行访问,但所有内容都返回undefined

来自控制器的JSON数据:

{
    "workers": {
        "107": "Lisa",
        "96": "Marvin",
        "24": "Michael",
        "23": "Patrick",
        "116": "Peter"
    }
}

Ajax Call:

$.ajax({
    url: '/cake/workers/getWorkersAsJSON.json',
    async: true,
    success: function(data) {
        // process
    }
});

6 个答案:

答案 0 :(得分:1)

您需要添加dataType: 'json'

$.ajax({
    url: '/cake/workers/getWorkersAsJSON.json',
    async: true,
    dataType: 'json',
    success: function(data) {
       $.each(data.workers, function(i, v) {
          console.log(i + ' : ' + v);
       })
    }
});

将数据类型指定为JSON然后将其转换为JavaScript对象,您可以使用$.each进行迭代,或使用.作为分隔符直接调出项目。以上示例有效。

仅供参考:您无需指定async: true,因为默认情况下这是真的。

答案 1 :(得分:1)

实际上是$.ajax datatype:json的jQuery简写。该函数称为getJSON

在您的示例中,它将实现如下:

$.getJSON( "/cake/workers/getWorkersAsJSON.json", function( data ) {
 console.log(data);
});

这将获得JSON,并继续将检索到的数据作为数组记录到Console中。

来源:http://api.jquery.com/jquery.getjson/

答案 2 :(得分:1)

您好请检查以下代码。您正在发送对象,因此必须使用密钥访问数据。

$.ajax({
    url: '/cake/workers/getWorkersAsJSON.json',
    async: true,
    success: function(data) {
        console.log(data.workers.107) // should show "Lisa"
        //if you need to use loop, try these
        var keys = Object.keys(data.workers);

        for(var key in keys){ 
          console.log(data.workers[key]);  
        }
    }
});

答案 3 :(得分:0)

尝试

var obj = $.parseJSON(data);

success函数中。

答案 4 :(得分:0)

它看起来不像一个数组,所以不确定它是否可以用'每个'循环(请参阅此处的JSON数组定义)。 很可能它可以作为

访问
data.workers.107

如果不是最简单的理解结构的方法是在ajax回调中设置断点并检查JavaScript对象的结构。

答案 5 :(得分:0)

使用开源项目jinqJs

您可以像这样进行同步调用以获取JSON对象:

var result = jinqJs().from('/cake/workers/getWorkersAsJSON.json').select();

访问它的异步方式:

var result;
    jinqJs().from('/cake/workers/getWorkersAsJSON.json', function(self) {
         result = self.select();
});