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
Javascript JsON get object member name
提问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/
回答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
它将返回南非荷兰语

