开发者

parsing JSON - How do I grab data within multiple entries in JSON?

I have a little app that pulls data from several API's. In all of my cases so far I get JSON back for a single response, but for this one I get an array of hits. How do I access the data in the array?? Here's the basic structure of my javascript grabbing data from the returned JSON:

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

So that works great for a single response, it grabs the article title and throws it in a div. But what if开发者_高级运维 I get back an array of articles like this

JSON:

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

My main question is just how to grab say the DocTitle here of a given article? simply grabbing .DocTitle doesn't seem to get through. BONUS POINTS for modifying the javascript to iterate through the array of articles returned too.

Thanks a million.


In your question this:

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

Has been over-abbreviated to the point that we have to guess what you meant. You can't have an array sitting in the middle of an object unless it is associated with a key. You need something like this:

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

Note I've added the key "articles" within your object.

Or you can return an array on its own instead of as part of another object:

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


[{"ResultId":1,"DocType":"ar","DocTitle":"some title"},{"ResultId":2,"DocType":"ar","DocTitle":"some title"}] This array should have an index too.

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜