Javascript JsON 获取对象成员名称

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3966199/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-25 02:51:14  来源:igfitidea点击:

Javascript JsON get object member name

javascriptjqueryhtmljson

提问by AnD

this is might be a very basic question, but seems like it's not easy to find the answer. I have a Json, more or less is like:

这可能是一个非常基本的问题,但似乎不容易找到答案。我有一个 Json,或多或少是这样的:

languages = {
"aa":{"iso639-2T":"aar","family":"Afro-Asiatic","labels":{"language_names":["Afar"],"native_names":["Afaraf"]}},
"ab":{"iso639-2T":"abk","family":"Northwest Caucasian","labels":{"language_names":["Abkhaz"],"native_names":["\u0430\u04a7\u0441\u0443\u0430"]}},
"af":{"iso639-2T":"afr","family":"Indo-European","labels":{"language_names":["Afrikaans"],"native_names":["Afrikaans"]}}, etc...etc... }

if you see json above, there's several language object inside languages variable. and each language object has its own name as its identifier ("aa", "ab", "af")

如果您看到上面的 json,则语言变量中有多个语言对象。并且每个语言对象都有自己的名称作为其标识符(“aa”、“ab”、“af”)

so then, my question is, how to get those identifier ("aa", "ab", "af") if i want to list all of those language in html? eg. if i want to create like a combo box (<option value="aa">Afar</option><option value="ab">Abkhaz</option><option value="af">Afrikaans</option>)

那么,我的问题是,如果我想在 html 中列出所有这些语言,如何获取这些标识符(“aa”、“ab”、“af”)?例如。如果我想创建一个组合框 ( <option value="aa">Afar</option><option value="ab">Abkhaz</option><option value="af">Afrikaans</option>)

actually what i want to achieve is something like this (in php)

实际上我想要实现的是这样的(在php中)

$sampleArray = Array("aa" => "Afar", "ab" => "Abkhaz", "af" => "Afrikaans"); foreach($sampleArray as $id => $value){ /* I can get the id from $id* / }

is there any solution similar like php syntax above for my json in java script?

我的 json 在 java 脚本中有没有类似上面的 php 语法的解决方案?

ps. if you're wondering why i'm not using array - I'm just thinking it will easier to grab certain language object (im just do something like: languages["af"]to get afrikaans language) rather than i should do: loop through the entire language object and check one-by-one if the id is what i want, and then return it. - you can give me another suggestion for this if you guys have a better idea :)

附:如果你想知道为什么我不使用数组 - 我只是想获取某些语言对象会更容易(我只是做一些类似的事情:languages["af"]获取南非荷兰语)而不是我应该做的:遍历整个语言对象并一一检查id是否是我想要的,然后返回。- 如果你们有更好的主意,你可以给我另一个建议:)

Best Regards,

最好的祝福,

AnD

采纳答案by Gabriele Petrioli

this should do what you want..

这应该做你想做的..

to see them

去看他们

for (var lang in languages)
  alert(lang + ' : ' + languages[lang].labels.language_names[0]);

to put them in the DOM

将它们放入 DOM

var $select = $('selector to your select element');
for (var lang in languages)
  $select.append('<option value="'+lang+'">' + languages[lang].labels.language_names[0] + '</option>');

Working code at http://www.jsfiddle.net/EsJAh/

http://www.jsfiddle.net/EsJAh/ 上的工作代码

回答by Mads Lee Jensen

You can use the "for"

您可以使用“为”

for (var key in languages)
{
 alert(key);
}

回答by mellowsoon

var data = new Array();
for(var lang in languages) {
    data[lang] = languages[lang];
}

回答by Mic

Did you try:

你试过了吗:

languages['af'].labels.language_names[0]

It will return Afrikaans

它将返回南非荷兰语

回答by AnD

If you're using jquery, then you can do this actually:

如果您使用的是jquery,那么您实际上可以这样做:

$.each( languages, function(k, v){
        alert( "Key: " + k + ", Value: " + v );
        // value is your particular language object based on k variable
});

:)

:)