更好的方式来接收json响应

时间:2015-11-28 13:08:52

标签: jquery json

我遇到一些问题需要接收JSON响应。这是POST响应:

{
    "id": xxxxx,
    "name": "xxx",
    "description": null,
    "latitude": null,
    "longitude": null,
    "created_at": "2015-11-28T12:52:07Z",
    "elevation": null,
    "last_entry_id": null,
    "ranking": 15,
    "metadata": null,
    "username": "xxxxxxxxxx",
    "tags": [],
    "api_keys": [
        {
            "api_key": "XXXXXXXXXXXXX",
            "write_flag": true
        },
        {
            "api_key": "XXXXXXXXXXXXX",
            "write_flag": false
        }
    ]
}

这是我在jQuery中的功能:

function Thingspeak(){
    var API = $('#API_Key').val();
    $.ajax({  
        type: "POST",  
        url: "https://thingspeak.com/channels.json",  
        data: {api_key: API, name: 'test', field1: 'tm', field2: 'hm', field3: 'bn'},  
        success: function(data) {  
            var id = data.id;
            var API_r = data.api_keys[0][0];
            var API_w = data.api_keys[1][0];
            console.log(id+": "+API_r+" "+API_w)
        }  
    });  
}

我完全收到了channel_id,但对于api_keys,我试图寻找一些方法来接收,但没有任何运气。我认为这是一个非常简单的问题,但我完全坚持这一点。

2 个答案:

答案 0 :(得分:1)

data.api_keys是一个数组对象。

当然,您可以使用array访问[0]的第一个元素。 但如果你打印它:

console.log( data.api_keys[0] );

您会看到data.api_keys[0]对象,包含2个道具 - api_keywrite_flag。所以正确的代码应该是:

console.log( data.api_keys[0].api_key );
// or
console.log( data.api_keys[0]["api_key"] );

答案 1 :(得分:0)

var API_r = data.api_keys[0].api_key;
var API_w = data.api_keys[1].api_key;