如何从 API 响应中提取部分 JSON

How to extract partial JSON from API response?

本文关键字:提取部 JSON 响应 API      更新时间:2023-09-26
浏览器

打开时加载

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

我的问题是我使用的服务器 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)
}

你需要使用数据作为数组(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)
}

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

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

在 JsBin 上提供现场演示