按编号而不是按名称选择JSON对象

时间:2016-05-08 10:17:02

标签: javascript json

我尝试使用多种语言的信息存储JSON对象。我甚至不确定他们这样做是好的,欢迎任何建议。

我目前的问题是,我不知道如何在不知道它是什么语言的情况下访问第一语言。

var Data = {

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

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

我只想访问第二个对象,有时候是" en",有时是" de"。

感谢任何tipps!

5 个答案:

答案 0 :(得分:1)

这是一个纯粹的JavaScript解决方案: 第一:你得到了对象的键:

var keys = Object.keys(Data);

然后:密钥存储在一个数组中。您可以使用索引访问它们。像:

Data[keys[0]]

现在:您可以使用foor循环或任何您想要的东西:)

答案 1 :(得分:1)

数据是一个不是数组的对象,所以你不能像Data [0]那样访问它,你可以像Data.en那样访问它。

但正如你所说,你不知道关于en或de的任何事情,所以我建议你像这样形成Data对象:

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

}]

答案 2 :(得分:0)

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);
  }  
});

答案 3 :(得分:0)

var name = (Data.en || Data.de || {})['Name'];
  1. (Data.en || Data.de || {})获取 Data.en Data.de 的值,如果两者都不存在,则返回空对象,以便脚本不会抛出名称属性
  2. 的例外情况
  3. ()['Name']myObject['Name']myObject.Name
  4. 相同
  5. 将值分配给name变量,至少某些名称undefined
  6. 如果您有更多语言,请将它们全部添加,请注意:它将返回第一个找到的语言

    var name = (Data.en || Data.de || Data.ru || Data.fr || {})['Name'];
    

答案 4 :(得分:0)

使用Object.keys方法获取对象属性名称列表:

console.log(Data[Object.keys(Data)[1]]['Name']);   // "Some name"