Intento almacenar un objeto JSON con información en varios idiomas. Ni siquiera estoy seguro de cómo lo hicieron, es bueno, cualquier sugerencia es bienvenida.

Mi problema actual es que no sé cómo acceder al primer idioma sin saber qué idioma es.

var Data = {

  "NameIntern": "Something intern",
  "en":  {
          "Name": "Some name",
          "ModuleOrder": "123,333,22"  }
};

document.write(Data[1].Name);

Solo quiero acceder al segundo objeto, a veces es "en", a veces es "de".

Gracias por cualquier consejo!

0
KevD 8 may. 2016 a las 13:17

4 respuestas

La mejor respuesta

Aquí hay una solución javascript pura: Primero: obtienes las claves del objeto:

var keys = Object.keys(Data);

Luego: las claves se almacenan en una matriz. Puede acceder a ellos con un índice. Me gusta:

Data[keys[0]]

Ahora: puedes usar un bucle for o lo que quieras :)

1
Citrullin 11 may. 2016 a las 20:10
var Data = {

  "NameIntern": "Something intern",
  "en":  {
          "Name": "Some name",
          "ModuleOrder": "123,333,22"  }
};

var index = 0;
$.each(Data, function(key, val){
  index += 1;
  if (index == 2){
    // key is the language, like in this example key is 'en'
    console.log(key);
  }  
});
0
Kelvin 8 may. 2016 a las 10:23

Use el método Object.keys para obtener una lista de nombres de propiedades de objetos:

console.log(Data[Object.keys(Data)[1]]['Name']);   // "Some name"
0
RomanPerekhrest 8 may. 2016 a las 10:52

Los datos son un objeto, no una matriz, por lo que no puede acceder a ellos como datos [0], puede acceder a ellos como datos.

Pero como usted dice que no sabe nada acerca de en o de, le sugiero que forme el objeto Datos de esta manera:

var Data =[{
lang:"en",
langData:{
   Name:"Some name"
}

}]

1
jsDevia 8 may. 2016 a las 10:35