0

I am writing code to get the XML from a site and parse it.

I want to get all titles from the parsed JSON. How can I do that?

I've tried many things but still can't get it to work. Am trying it for hours, sadly.

parsed JSON:

[ { title: [ 'Dit was de Week (10 juni)' ],
    link: [ 'http://nos.nl/l/2177585' ],
    description: [ 'Een terugblik op het belangrijkste nieuws van de afgelopen week.' ],
    pubDate: [ 'Sat, 10 Jun 2017 19:40:25 +0200' ],
    guid: [ [Object] ] },
  { title: [ '\'Het is best nog wel een beetje spannend\'' ],
    link: [ 'http://nos.nl/l/2177581' ],
    description: [ 'Je even helemaal inleven in een karakter. Dat is wat bezoekers van Animecon in Den Haag dit weekend doen. Een festival vol levende Japanse karakters uit films of videogames. "Het is een heerlijk gevoel, maar het is soms best nog wel een beetje spannend", vertelt Anastasia, een professionele cosplayer.' ],
    pubDate: [ 'Sat, 10 Jun 2017 18:41:45 +0200' ],
    guid: [ [Object] ] },
  { title: [ 'Ruzie Amsterdam loopt uit op steekpartij: dode en gewonden' ],
    link: [ 'http://nos.nl/l/2177578' ],
    description: [ 'Bij een steekpartij in een woning in Amsterdam-Zuidoost is een dode gevallen.  Een andere man raakte gewond. Dat gebeurde vanochtend vroeg bij een uit de hand gelopen ruzie tussen vier mannen tijdens een feestje, zo denkt de politie. ' ],
    pubDate: [ 'Sat, 10 Jun 2017 18:27:04 +0200' ],
    guid: [ [Object] ] },
  { title: [ 'Vrouw wordt met een touw in veiligheid gebracht' ],
    link: [ 'http://nos.nl/l/2177573' ],
    description: [ 'In de stad waarin IS en het Iraakse leger vechten komen burgers regelmatig in de vuurlinie te liggen. Soms moeten ze zich zelf redden, soms schieten militairen burgers die vluchten voor IS-vuur te hulp.' ],
    pubDate: [ 'Sat, 10 Jun 2017 17:30:12 +0200' ],
    guid: [ [Object] ] },
  { title: [ 'Zo zien de fosforaanvallen in Mosul eruit' ],
    link: [ 'http://nos.nl/l/2177572' ],
    description: [ 'Er komen berichten uit de Iraakse stad Mosul dat ook fosforbommen worden ingezet in de strijd tegen IS. Volgens Islamitische Staat bestookt het Iraakse regeringsleger de stad met de brandbommen.' ],
    pubDate: [ 'Sat, 10 Jun 2017 17:29:23 +0200' ],
    guid: [ [Object] ] },
  { title: [ 'Vluchten uit Mosul: \'We moeten de katten opeten\'' ],
    link: [ 'http://nos.nl/l/2177571' ],
    description: [ 'Oud en jong probeert de belegerde stad Mosul te ontvluchten. Jongeren dragen de ouderen in kapotte kinderwagens de stad uit. De situatie is door de gevechten tussen IS en het Iraakse regeringsleger de afgelopen week verslechterd.' ],
    pubDate: [ 'Sat, 10 Jun 2017 17:28:40 +0200' ],
    guid: [ [Object] ] },
  { title: [ 'Italiaans maffialid uit Aalsmeer opgepakt in São Paulo' ],
    link: [ 'http://nos.nl/l/2177553' ],
    description: [ 'De politie in Brazilië heeft een Italiaans maffialid opgepakt. De man, Vincenzo Macrì, coördineerde volgens de politie als bloemenhandelaar vanuit Aalsmeer leveringen van grote partijen cocaïne van Zuid-Amerika naar Europa. ' ],
    pubDate: [ 'Sat, 10 Jun 2017 15:48:09 +0200' ],
    guid: [ [Object] ] },
  { title: [ 'Botsende ballonnen met gewonde in de VS' ],
    link: [ 'http://nos.nl/l/2177531' ],
    description: [ 'Vier ballonnen staan klaar om op te stijgen, Plotseling draait de wind. En dan gaat het mis in de Chatsworth, in het Amerikaanse Illinois. Twee ballonnen botsen. Er valt een lichtgewonde.' ],
    pubDate: [ 'Sat, 10 Jun 2017 13:19:21 +0200' ],
    guid: [ [Object] ] },
  { title: [ 'Kosovaren in de rij voor een visum' ],
    link: [ 'http://nos.nl/l/2177490' ],
    description: [ 'In Kosovo zijn zondag verkiezingen. Maar in plaats van de campagnes volgen, zijn Kosovaren vooral druk met wat anders: in de rij staan voor ambassades van verschillende EU-landen. ' ],
    pubDate: [ 'Sat, 10 Jun 2017 08:08:16 +0200' ],
    guid: [ [Object] ] },
  { title: [ 'Dronebeelden van gevechten bij Marawi' ],
    link: [ 'http://nos.nl/l/2177530' ],
    description: [ 'Op dronebeelden zonder geluid is te zien dat er hevig wordt gevochten in de Filipijnse stad Marawi. Het regeringsleger beschiet stellingen van de moslimrebellen in de stad.' ],
    pubDate: [ 'Sat, 10 Jun 2017 08:06:18 +0200' ],
    guid: [ [Object] ] },
  { title: [ 'Eindhoven: Politie massaal aanwezig vanwege \'verdachte situatie\'\'' ],
    link: [ 'http://nos.nl/l/2177478' ],
    description: [ 'Agenten lopen rond op het station en rond het stadion van Eindhoven, aan het einde van het concert van Guus Meeuwis, ' ],
    pubDate: [ 'Fri, 09 Jun 2017 23:56:08 +0200' ],
    guid: [ [Object] ] },
  { title: [ '\'Ik wilde het publieke debat, geen veiligheidsrisico\'s\'' ],
    link: [ 'http://nos.nl/l/2177469' ],
    description: [ 'De onlangs vrijgelaten Amerikaanse ex-militair Chelsea Mannings vertelt voor het eerst over het lekken van staatsgeheimen aan WikiLeaks' ],
    pubDate: [ 'Fri, 09 Jun 2017 22:44:10 +0200' ],
    guid: [ [Object] ] },
  { title: [ 'Wanhopige actie tegen huisuitzetting in Peru' ],
    link: [ 'http://nos.nl/l/2177455' ],
    description: [ 'Ouders in Peru nemen wanhopige maatregelen om te voorkomen dat ze uit hun huis gezet worden. Ze zetten daarbij het leven van hun kinderen op het spel.' ],
    pubDate: [ 'Fri, 09 Jun 2017 21:57:53 +0200' ],
    guid: [ [Object] ] },
  { title: [ '\'Blijf godverdomme van de camping af\'' ],
    link: [ 'http://nos.nl/l/2177453' ],
    description: [ 'De bewoners van Fort Oranje zijn niet blij met aangekondigde ontruiming van de camping.' ],
    pubDate: [ 'Fri, 09 Jun 2017 21:53:30 +0200' ],
    guid: [ [Object] ] },
  { title: [ 'Bouwvallig, vervuild en brandgevaarlijk: Wonen op Fort Oranje' ],
    link: [ 'http://nos.nl/l/2177444' ],
    description: [ 'Volgens de burgemeester lijkt de permanent bewoonde camping op een woonwijk, maar dan verloederd, vies en gevaarlijk. Tijd om Fort Oranje te sluiten.' ],
    pubDate: [ 'Fri, 09 Jun 2017 20:41:10 +0200' ],
    guid: [ [Object] ] },
  { title: [ 'May bezocht koningin na verkiezingsnederlaag' ],
    link: [ 'http://nos.nl/l/2177366' ],
    description: [ 'De Britse premier May heeft bij de verkiezingen verloren, maar toch is ze bij de koningin geweest en gaat ze een nieuwe regering vormen. ' ],
    pubDate: [ 'Fri, 09 Jun 2017 02:33:23 +0200' ],
    guid: [ [Object] ] },
  { title: [ 'Statement Buma' ],
    link: [ 'http://nos.nl/l/2177415' ],
    description: [ 'In het Catshuis hebben VVD, CDA, D66 en GroenLinks weer overlegd. CDA-leider Buma zei dat er maandag weer verder wordt gepraat. ' ],
    pubDate: [ 'Fri, 09 Jun 2017 16:38:29 +0200' ],
    guid: [ [Object] ] },
  { title: [ 'Bouwvallig, vervuild en brandgevaarlijk: Wonen op Fort Oranje' ],
    link: [ 'http://nos.nl/l/2177407' ],
    description: [ 'Volgens de burgemeester lijkt de permanent bewoonde camping op een woonwijk, maar dan verloederd, vies en gevaarlijk. Tijd om Fort Oranje te sluiten.' ],
    pubDate: [ 'Fri, 09 Jun 2017 18:35:18 +0200' ],
    guid: [ [Object] ] },
  { title: [ 'Massale examenfraude in China (2014)' ],
    link: [ 'http://nos.nl/l/2001167' ],
    description: [ 'Een goed voorbeeld van de technische snufjes die spiekende examenkandidaten in China gebruiken.' ],
    pubDate: [ 'Fri, 09 Jun 2017 17:07:24 +0200' ],
    guid: [ [Object] ] },
  { title: [ 'Juwelier zet overval in scène' ],
    link: [ 'http://nos.nl/l/2177410' ],
    description: [ 'Drie overvallers waren opgepakt, de verzekering had al een deel van de schade uitgekeerd. Nu heeft de handelaar toegegeven dat hij de overval zelf heeft gepland.' ],
    pubDate: [ 'Fri, 09 Jun 2017 13:35:25 +0200' ],
    guid: [ [Object] ] } ]

JS:

var json = JSON.stringify(data, null, 2);

  var obj = JSON.parse(json.toString());
  var objects1 = obj.rss.channel;

  var objects2 = objects1[0].item;

  console.log(objects2);

With this code I am getting the value of one key:

    function getValue(key, array) {
         for (var el in array) {
             if (array[el].hasOwnProperty(key)) {   
                 return array[el][key];
             }
         }
    }
  var title = getValue("title", objects2).toString();

title.replace("['", "").replace("']", "");

console.log(title);

Thanks.

Teun
  • 13
  • 3
  • 1
    Possible duplicate of [From an array of objects, extract value of a property as array](https://stackoverflow.com/questions/19590865/from-an-array-of-objects-extract-value-of-a-property-as-array) – str Jun 10 '17 at 19:28

1 Answers1

0

I think you might be overthinking this one; there's no need to keep re-parsing and stringifying the same stuff. Parse it once, then just work with it as a data object; from then on you can forget it was ever JSON.

This works, given your parsed JSON as data:

data.forEach(function(x) {
  console.log(x.title[0]);
});

(That JSON contains a lot of unnecessary single-element arrays; if you can, consider changing those to simple strings.)

Daniel Beck
  • 20,653
  • 5
  • 38
  • 53