【问题标题】:parsing JSON - How do I grab data within multiple entries in JSON?解析 JSON - 如何在 JSON 中的多个条目中获取数据?
【发布时间】:2011-08-31 03:56:12
【问题描述】:

我有一个小应用程序可以从多个 API 中提取数据。到目前为止,在我的所有案例中,我都会返回 JSON 以获取单个响应,但对于这个,我得到了一系列命中。如何访问数组中的数据?这是我的 javascript 从返回的 JSON 中获取数据的基本结构:

// pull article from JSON
function getArticle(article) {
  document.getElementById('articletitle').innerHTML = (article.title);
  ...
};

因此,它非常适合单个响应,它会抓取文章标题并将其放入 div 中。但是,如果我得到一系列这样的文章怎么办

JSON:

getArticle({"Title":"title","Rights":"Copyright (C)",...[{"ResultId":1,"DocType":"ar","DocTitle":"some title",...

我的主要问题是如何获取给定文章的DocTitle ?简单地抓住.DocTitle 似乎没有通过。用于修改 javascript 以遍历返回的文章数组的奖励积分。

谢谢一百万。

【问题讨论】:

  • 你不需要有 = (article.title);它应该只是 = article.title;如果您提供了一个您正在使用的完整 JSON 示例,这也会很有帮助……让我感到困惑。

标签: javascript json api


【解决方案1】:

在你的问题中:

getArticle({"Title":"title","Rights":"Copyright (C)",...
[{"ResultId":1,"DocType":"ar","DocTitle":"some title",... 

已被过度缩写,以至于我们不得不猜测您的意思。除非它与键相关联,否则不能将数组放在对象的中间。你需要这样的东西:

getArticle({"Title":"title","Rights":"Copyright (C)",...
    "articles" : [{"ResultId":1,"DocType":"ar","DocTitle":"some title",...]
});

function getArticle(article) {
   alert(article.articles[0].DocTitle); // first item in array: "some title"

   for (var i = 0; i < article.articles.length; i++) {
      var currentArticle = article.articles[i];
      alert(currentArticle.ResultId + ": " + currentArticle.DocTitle);
   }
}

请注意,我已在您的对象中添加了关键的“文章”。

或者您可以单独返回一个数组,而不是作为另一个对象的一部分:

getArticle([{"ResultId":1,"DocType":"ar","DocTitle":"some title",...},{"ResultId":2,...},...]);

function getArticle(articles) {
   for (var i = 0; i < articles.length; i++)
      alert(articles[i].DocTitle);
}

【讨论】:

  • 嘿抱歉,我基本上放弃了项目的这一部分,因为我使用的 API 被证明有点愚蠢。但总的来说,这个答案非常有帮助。关键是使用“钥匙”。没有双关语。非常感谢。
  • 连同您的回答,这有助于我在更基本的层面上理解结构,这有助于:webmonkey.com/2010/02/get_started_with_json
【解决方案2】:

[{"ResultId":1,"DocType":"ar","DocTitle":"some title"},{"ResultId":2,"DocType":"ar","DocTitle":"some标题”}] 这个数组也应该有一个索引。

var test={"Title":"title",content:[{"ResultId":1,"DocType":"ar","DocTitle":"some title"},{"ResultId":2,"DocType":"ar","DocTitle":"some title"}]};
alert(test.content[0].DocTitle);

【讨论】:

    猜你喜欢
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    相关资源
    最近更新 更多