Michael Schwartz
Michael Schwartz

Reputation: 8415

JSON for Language Translation

Fiddle: https://codepen.io/anon/pen/EvProJ?editors=1010

I'm trying to use a json object to set values and text stored in a JSON object

I can do it fine this way....

var myJSON = { name:"Michael", age:25, city:"Chicago" };
document.getElementById("demo").innerHTML = myJSON.name;

However, I'm having difficulty setting values and text stored in a JSON object. Like so...

var language = {
  eng: {
    hi: "Hello",
    bye: "Goodbye"
  },
  es: {
    hi: "Hola",
    bye: "Adíos"
  },
  fr: {
    hi: "Bonjour",
    bye: "Au revoir"
  }
};

console.log(JSON.parse(language.eng).hi);

Can someone explain what am I doing wrong and how can I set this text/values dynamically using this JSON object?

var language = {
  eng: {
    hi: "Hello",
    bye: "Goodbye"
  },
  es: {
    hi: "Hola",
    bye: "Adíos"
  },
  fr: {
    hi: "Bonjour",
    bye: "Au revoir"
  }
};

$('[data-language]').value = JSON.parse(language.eng).hi;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text" data-language>
<p data-language></p>

Upvotes: 0

Views: 2634

Answers (2)

user7045690
user7045690

Reputation:

You don't have to parse JSON as its already a JSON object. Just do this language.eng.hi

Demo: https://codepen.io/dividapps/pen/OjMdoj

Upvotes: 1

Wayne Allen
Wayne Allen

Reputation: 1745

JSON.parse is used to convert a Json string to an object. However, language is already an object.

If you want to convert your object to a Json string use the stringify method JSON.stringify(language).

Upvotes: 1

Related Questions