Jump to content

Recommended Posts

I am new to JS but have been trying for three days reading everything and anything I could find...trying new things... I cannot figure out how to parse this in js...

 

It is a valid json file ... it's an object with what looks like arrays in it.. ?

 

Here is part of it... you'll get the idea...

{
	"lang": [{
		"code": 1000,
		"day": "Sunny",
		"night": "Clear",
		"icon": 113,
		"languages": [
			 {
			"lang_name": "Chinese Simplified",
			"lang_iso": "zh",
			"day_text": "晴天",
			"night_text": "晴朗"
		}, {
			"lang_name": "Finnish",
			"lang_iso": "fi",
			"day_text": "Aurinkoinen",
			"night_text": "Pilvetön"
		}, {
			"lang_name": "French",
			"lang_iso": "fr",
			"day_text": "Ensoleillé",
			"night_text": "Clair"
		}, {
			"lang_name": "German",
			"lang_iso": "de",
			"day_text": "Sonnig",
			"night_text": "Klar"
		},{
			"lang_name": "Spanish",
			"lang_iso": "es",
			"day_text": "Soleado",
			"night_text": "Despejado"
		}, {
			"lang_name": "Swedish",
			"lang_iso": "sv",
			"day_text": "Soligt",
			"night_text": "Klart"
		}]
	}, {
		"code": 1003,
		"day": "Partly Cloudy",
		"night": "Partly Cloudy",
		"icon": 116,
		"languages": [{
			"lang_name": "Chinese Simplified",
			"lang_iso": "zh",
			"day_text": "局部多云",
			"night_text": "局部多云"
		},{
			"lang_name": "Finnish",
			"lang_iso": "fi",
			"day_text": "Puolipilvinen",
			"night_text": "Puolipilvinen"
		}, {
			"lang_name": "French",
			"lang_iso": "fr",
			"day_text": "Partiellement nuageux",
			"night_text": "Partiellement nuageux"
		}, {
			"lang_name": "German",
			"lang_iso": "de",
			"day_text": "leicht bewölkt",
			"night_text": "leicht bewölkt"
		}, {
			"lang_name": "Spanish",
			"lang_iso": "es",
			"day_text": "Parcialmente nublado",
			"night_text": "Parcialmente nublado"
		}, {
			"lang_name": "Swedish",
			"lang_iso": "sv",
			"day_text": "Växlande molnighet",
			"night_text": "Växlande molnighet"
		}]

I cannot for the life of me figure out to parse this thing...what I'm after is getting the code ... then the lang_iso so I can show users [who have their language already set] the text in their language...

 

I am probably making this wayyyyyyyyyyyyy too hard but honestly I have tried every loop... every function.... and I cannot get the data I am after..

 

Help please and Thank you.

 

 

Link to comment
https://forums.phpfreaks.com/topic/305009-jsjson-issue/
Share on other sites

Yep this should be pretty easy.. Have you come close to any working code? I wouldn't mind seeing what you've got, and then I can try to show you where you're going wrong and how to change it. Might be better than me just giving you the answer I think :)

 

Denno

Edited by denno020
Link to comment
https://forums.phpfreaks.com/topic/305009-jsjson-issue/#findComment-1551416
Share on other sites

Well that's what I keep hearing LOL   "That's easy..."   Like I said I'm sure I'm overthinking this :)

 

Here is what I've tried:

 

 

 

var langFile = this.langFile;
   var keys = Object.keys(this.langFile);
       var langFile = this.langFile[keys];

and the standard 

for (var i=0; i<this.langFile.lang.length; i++) {
    var langFile = this.langFile.lang[i];
    console.log(langFile.languages);
}

Plus so many other things that I've read on the internet that my head is ready to explode :)

 

Like I said I'm kinda new to this so be gentle hahaahhha

 

Thank you!

Link to comment
https://forums.phpfreaks.com/topic/305009-jsjson-issue/#findComment-1551435
Share on other sites

You were on the right path with your for loop.. You just needed to go another level deeper..

 

I've had to make a few assumptions on what data you know (i.e. what you can test using if conditions), so the code in the attached jsFiddle may be a little off, but it should serve as a decent starting point.

 

Check out what I've written here:

var json = {
	"lang": [{
		"code": 1000,
		"day": "Sunny",
		"night": "Clear",
		"icon": 113,
		"languages": [
			 {
			"lang_name": "Chinese Simplified",
			"lang_iso": "zh",
			"day_text": "晴天",
			"night_text": "晴朗"
		}, {
			"lang_name": "Finnish",
			"lang_iso": "fi",
			"day_text": "Aurinkoinen",
			"night_text": "Pilvetön"
		}, {
			"lang_name": "French",
			"lang_iso": "fr",
			"day_text": "Ensoleillé",
			"night_text": "Clair"
		}, {
			"lang_name": "German",
			"lang_iso": "de",
			"day_text": "Sonnig",
			"night_text": "Klar"
		},{
			"lang_name": "Spanish",
			"lang_iso": "es",
			"day_text": "Soleado",
			"night_text": "Despejado"
		}, {
			"lang_name": "Swedish",
			"lang_iso": "sv",
			"day_text": "Soligt",
			"night_text": "Klart"
		}]
	}, {
		"code": 1003,
		"day": "Partly Cloudy",
		"night": "Partly Cloudy",
		"icon": 116,
		"languages": [{
			"lang_name": "Chinese Simplified",
			"lang_iso": "zh",
			"day_text": "局部多云",
			"night_text": "局部多云"
		},{
			"lang_name": "Finnish",
			"lang_iso": "fi",
			"day_text": "Puolipilvinen",
			"night_text": "Puolipilvinen"
		}, {
			"lang_name": "French",
			"lang_iso": "fr",
			"day_text": "Partiellement nuageux",
			"night_text": "Partiellement nuageux"
		}, {
			"lang_name": "German",
			"lang_iso": "de",
			"day_text": "leicht bewölkt",
			"night_text": "leicht bewölkt"
		}, {
			"lang_name": "Spanish",
			"lang_iso": "es",
			"day_text": "Parcialmente nublado",
			"night_text": "Parcialmente nublado"
		}, {
			"lang_name": "Swedish",
			"lang_iso": "sv",
			"day_text": "Växlande molnighet",
			"night_text": "Växlande molnighet"
		}]
    }
]}

// Example, get the Spanish translation for Partly Cloudy

for (var i = 0 ; i < json.lang.length ; i++) { // Loop the weather types
  // First iteration will give you 'Sunny'
  // Second iteration will give you 'Partly Cloudy'
  // etc
  var langFile = json.lang[i];
  if (langFile.code !== 1003) { // Matching on the code for 'Partly Cloudy'
    continue; // Continue the loop if the code doesn't match
  }
  
  // Getting here means we know that the variable lang contains the language translations for 'Partly Cloudy'
  for (var j = 0 ; j < langFile.languages.length ; j++) { // Loop through translations to find Spanish
    var language = langFile.languages[j];

    if (language.lang_iso === 'es') {
      alert(language.day_text); // Success! This is where you will update your applications text. (You won't use alert)
    }
  }
  
}
 

Any questions, let us know :).

 

Hope that helps,

Denno

Edited by ignace
Please keep code contained to the forum. Thank you!
Link to comment
https://forums.phpfreaks.com/topic/305009-jsjson-issue/#findComment-1551437
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.