【问题标题】:jquery json and objectsjquery json 和对象
【发布时间】:2017-03-29 12:46:38
【问题描述】:

我正在尝试使用 API 从在线获取 JSON,它一直将文本解释为对象,如果您比较它给出的输出和链接的来源,它无法获取一些关键信息。

$(document).ready(function() {
  $.getJSON("http://www.dnd5eapi.co/api/races/1", function(result) {
    $.each(result, function(i, field) {
      $("#output").append(field + "</br> ");
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<div id="output"></div>

【问题讨论】:

  • 原因是请求返回JSON。您需要根据需要格式化该对象,而不是通过将其附加到现有元素来简单地将其强制为字符串。
  • 你能指出我可以阅读更多关于这个主题的地方吗?
  • 供您参考,这是完整的回复:jsoneditoronline.org/?id=13d2afdcd0c51d3ce2c9c8a4778c6850

标签: jquery json object get


【解决方案1】:

它不会遗漏关键信息,您只是在遍历结果 JSON 对象的属性。您不是递归地遍历对象属性的属性,依此类推。您可以在输出中看到一些 [object Object],如果属性值是另一个对象而不是字符串,则会出现这些情况。这些包含您“丢失”的信息。

正如 Rory McCrossan 所说,这是因为您获得的是 JSON 结果,并且您已经将其解析为对象而不是字符串。这样您可以轻松访问其属性,但如果您更需要原始字符串,请使用 $.get 或 $.ajax 而不是 $.getJSON 并将 dataType 指定为文本。

对于递归 JSON 迭代,see this

简单的基于文本的解析示例:

$(document).ready(function(){
    $.get(
    {
        url: "http://www.dnd5eapi.co/api/races/1",
        dataType: "text",
        success: function(result){
            $("#output").append(result);
    }});
});

【讨论】:

  • 那就对了!感谢您的回答,我会看看我能用这个做什么。
猜你喜欢
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
  • 2013-03-22
  • 1970-01-01
  • 2010-12-28
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多