Posted in javascript
986
6:20 am, August 31, 2018

json loop load elements

Loading json content from a url can be tricky, there are a few different things you need to watch out for. Here is some examples using an example json feed.

Load the feed

this will load the feed and console log all the data, so you can see what it is loading.

Javascript

$.getJSON( "https://kruxor.com/code/js/examples/abgt-example.json", function( data ) { console.log(data); });

Here is an example of the json feed, so we can see the elements we need to access:

JSON

{
  "@attributes": {
    "version": "2.0"
  },
  "channel": {
    "title": "Above & Beyond: Group Therapy",
    "link": "http:\/\/static.aboveandbeyond.nu\/grouptherapy\/podcast.xml",
    "description": "Group Therapy is the weekly radio show from Above & Beyond also known as ABGT",
    "language": "en",
    "copyright": "Above & Beyond",
    "lastBuildDate": "Fri, 07 Jul 2017 11:28:38 +0000",
    "category": "Music",
    "item": [{
          "title": "#239 Group Therapy Radio with Above & Beyond",
          "link": "http:\/\/www.aboveandbeyond.nu\/radio\/abgt239",
          "description": "Episode #239 \/ Ruben de Ronde x Rodg Guest Mix",
          "author": "Above & Beyond",
          "enclosure": {
            "@attributes": {
              "url": "http:\/\/traffic.libsyn.com\/anjunabeats\/ABGT239_LiveShow070717.m4a",
              "length": "115205480",
              "type": "audio\/mpeg"
            }
          },
          "guid": "abgt239",
          "pubDate": "Fri, 07 Jul 2017 08:10:00 +0000"
        }

Now we need to loop through each item in the channel to display all the results.

$.each( data.channel.item, function( key, val ) {

key is not really used in this loop val is where all the data is

you can access each item using: val.title to grab the title, etc. if you want to show any of the main data you can use. data.element

in the loop use: val.title
out of the loop use: data.title

if you have some tricky data in like the @attributes element, you might need to access it using the following method. this is how to access the url in the @attributes.

source_url = val['enclosure']['@attributes']['url'];

Note: you cant access the @attributes with the normal method, as it has invalid characters. So val.enclosure.@attributes.url will return an error.

Now we can put it all together to show the content from this json feed.

here is a function that will load the json and display the content in a #content div

function load_pod() {
	$("#content").html("Loading...");

	$.getJSON( "https://kruxor.com/code/js/examples/abgt-example.json", function( data ) {
	  var items = [];
	  var x = "";

	  console.log(data);
	  console.log(data.channel.category);
		// console.log(data.articles[0].description); // this works to extract the 1st item. 

		x = x + "<div class='details'>";
		x = x + "<h1>"+ data.channel.title +"</h1>";
		x = x + "<p>"+ data.channel.description +"</p>";
		x = x + "<p>Category: "+ data.channel.category +"</p>";
		x = x + "</div>";

	  $.each( data.channel.item, function( key, val ) {

	  	source = val['enclosure']['@attributes']['url'];
	  	audio = "<audio controls class='audio' preload='none'><source src='"+source+"' type='audio/mpeg'></audio>";

	  	x = x + "<div class='news-item'>";
	  	x = x + "<div class='news-title'><a href='"+val.link+"' target='_blank'>" + val.title + "</a></div>";
	  	x = x + audio;
	  	x = x + "<div class='description'>" + val.description + "</div>";
	  	x = x + "<div class='date-time'>" + val.pubDate + "</div>";
	  	x = x + "</div>";

	  });

	  $("#content").html(x + "<p><a href='#' target='_blank'>Source</a></p>");

	});	
}

Now we just need a div tag with content id.

<div id="content">...</div>

And for this one you need to include jquery as well.

Here is a working example:

This is a good overview of accessing json elements. stackoverflow

json loop load elements Demo

View Demo Full Screen View Demo New Tab

json loop load elements Code

Related Tags

No Items Found.

Add Comment
Type in a Nick Name here
 
Other Items in javascript
log the console log output to a div javascript basic test array and loop how to join an array in javascript using the join method show the current date in javascript get element by id and hide it get element by id with javascript set a cookie on click and then check if the cookie is set and dont show that message again console table rather than console log for javascript objects and arrays video not auto playing issue in chrome and brave change the box-shadow of an element with javascript boxShadow change the background color of an element with javascript adding a new line in javascript javascript update item in object change the border radius of an element with javascript only change padding of element with javascript get the value from a range input field with javascript twitter json feed testing center mode slick zoom testing gallery carousel center mode old browser check with javascript check browser version and show a message using clamp js to clamp lines of text add a gtag.js pdf click event ajax callback to delete with sweet alert confirmation to make it cool! 😎 prevent default click event on link show the browsers name in javascript json test objects (or arrays) loop through a complex object json javascript load json with vanilla javascript no jquery set active class based on url value check if a variable is undefined or NULL fancybox image popout easy check box highlight text area css validate an email address from a form field - version 2 check if a checkbox is checked with javascript form submit override with javascript submit a form with javascript onclick dropdown change input box on select Slick Slider Carousel with Fade Transition clear a input field when it looses focus using onblur javascript page redirect page scroll indicator research replacement slider for ken wheeler's slick carousel tiny slider 2 [testing] change a select box back to its initial select value select onchange add years as options to select dropdown using moment.js to make your time format nicer loop through object json javascript set the html of an element javascript get the value of an input form element (input value)