从AJAX响应中获取值

这个问题在这里已经有了答案:

  • 安全地将JSON字符串转换为对象22个答案
  • 在JavaScript中解析JSON? [复制] 16个回答

  • 正如你所说的JSON的字符串表示。 要将其转换为JSON对象,可以使用JSON.parse()

    要从数组中的每个对象获取id字段,可以使用ES6中使用箭头函数显示的Array#map

    JSON.parse(response).map(e => ({
        id: e.id,
        name: e.name
    }));
    

    var response = '[ { "id": "958315db-ca46-4b32-ad89-f0564a2bfa37", "name": "XXXX", "device_count": 3, "gateway_count": 2, "longitude": -109.207929275995, "latitude": 33.1906871835467 }, { "id": "4485e5ee-ba30-4103-8f24-c710efed3929", "name": "YYYY", "device_count": 0, "gateway_count": 0, "longitude": null, "latitude": null } ]';
    
    var ids = JSON.parse(response).map(e => ({
        id: e.id,
        name: e.name
    }));
    
    console.log(ids);
    document.body.innerHTML = '<pre>' + JSON.stringify(ids, 0, 4) + '</pre>'; // For DEMO purpose

    假设你在数据变量上获得这个json

     var data = [ { "id": "958315db-ca46-4b32-ad89-f0564a2bfa37", "name": "XXXX", "device_count": 3, "gateway_count": 2, "longitude": -109.207929275995, "latitude": 33.1906871835467 }, { "id": "4485e5ee-ba30-4103-8f24-c710efed3929", "name": "YYYY", "device_count": 0, "gateway_count": 0, "longitude": null, "latitude": null } ]
    

    你可以很容易地将id作为第一个元素的data[0].iddata.length将为您提供对象的总数,以便您可以迭代


    您可以使用JSON.parse()将字符串转换为“等效”JavaScript对象。 更多信息在这里:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

    在你的情况下,你可以做这样的事情:

    var obj = JSON.parse(response);         // an array in your case
    var ids = obj.map(e => e.id);
    var names = obj.map(e => e.name);
    

    .map()调用正在使用新的“胖箭头”运算符。 这种几乎相同的语法可能更为熟悉:

    var ids = obj.map( function(e) { return e.id; } );
    

    有关Array映射函数的信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

    关于[Fat]箭头函数的信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

    链接地址: http://www.djcxy.com/p/31713.html

    上一篇: Getting values out of AJAX response

    下一篇: turn string data into json format