【问题标题】:How to extract partial JSON from API response?如何从 API 响应中提取部分 JSON?
【发布时间】:2012-05-26 15:37:33
【问题描述】:

Load when the browser is open

这是我之前与此主题相关的问题。

我的问题是我使用的服务器 api 在列表中添加了一个新项目,正如我在上一个问题中所说,我对 API 或 jQuery 不太熟练,因此我想知道你能推荐我阅读什么关于这一点以及实用的解决方案。我需要这样做,所以 js 使用的字段只有 {"name":"Arthas","slug":"arthas","build":"12340","status":1} 而不是其余的。

非常感谢。

这是 api -> http://api.neverendless-wow.com/server-status

{"servers":[{"name":"Arthas","slug":"arthas","build":"12340","status":1},{"name":"Deathwing","slug":"deathwing","build":"13623","status":1}],"alerts":[]}

这是我现在的js

function checkStatus()
{
    jQuery.getJSON("http://api.neverendless-wow.com/server-status",function(data){ 
    if (data.status == '1')     {jQuery('#ServStat').addClass('online').removeClass('offline').attr('label','Online');}
    else     {jQuery('#ServStat').addClass('offline').removeClass('online').attr('label','Offline');}});
}
checkStatus();
{
    setInterval(changeState, 300000)
}

【问题讨论】:

    标签: javascript jquery api


    【解决方案1】:

    您需要将数据用作数组 (data[0]),因此您的代码如下:

    function checkStatus()
    {
        jQuery.getJSON("http://api.neverendless-wow.com/server-status",function(data){ 
            if (data.servers[0].status == '1') { 
                jQuery('#ServStat').addClass('online').removeClass('offline').attr('label','Online');
            }
            else {
                jQuery('#ServStat').addClass('offline').removeClass('online').attr('label','Offline');
            }
        });
    }
    
    checkStatus();
    {
        setInterval(changeState, 300000)
    }
    

    【讨论】:

    • 试试 data.servers[0].status 而不是 data[0].status。
    • 成功了!非常感谢@Shant,我想如果我想使用第二部分 {"name":"Deathwing","slug":"deathwing","build":"13623","status":1} 而不是数据。 servers[0].status 我将不得不使用 data.servers[1].status
    • 我已更正了答案中的代码 sn-p,很高兴听到您的问题已解决。你能接受我的回答吗?
    【解决方案2】:

    我可能会选择这样的东西:

    // check server status
    function checkStatus()
    {
        $.getJSON(server_url, function(data) { 
    
          // reset
          var mode = "Offline";
          $('.status').removeClass('online').addClass('offline');
    
          // is available?
          if (data !== null && data.servers !== null && data.servers[0].status === 1) {
            mode = "Online";        
            $('.status').removeClass('offline').addClass('online');
          }
    
          // Extract data from received JSON string is exists
          extractData(data);
    
          // set needed attributes
          $('.status')
            .attr('label', mode)
            .text('Servers are ' + mode);
        });
    }
    

    现场演示available on JsBin

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多