如何获取JSON对象(javascript)中的所有密钥
How to get all key in JSON object (javascript)
{"document":
{"people":[
{"name":["Harry Potter"],"age":["18"],"gender":["Male"]},
{"name":["hermione granger"],"age":["18"],"gender":["Female"]},
]}
}
从这个 JSON 示例中,我想为每个人获取诸如 name
、age
、 gender
等键。
怎么做?
我使用内置在JavaScript对象中的Object.keys
,它将从给定对象MDN引用返回一个键数组
var obj = {name: "Jeeva", age: "22", gender: "Male"}
console.log(Object.keys(obj))
试试这个
var s = {name: "raul", age: "22", gender: "Male"}
var keys = [];
for(var k in s) keys.push(k);
在这里,键数组将返回您的键["name", "age", "gender"]
var input = {"document":
{"people":[
{"name":["Harry Potter"],"age":["18"],"gender":["Male"]},
{"name":["hermione granger"],"age":["18"],"gender":["Female"]},
]}
}
var keys = [];
for(var i = 0;i<input.document.people.length;i++)
{
Object.keys(input.document.people[i]).forEach(function(key){
if(keys.indexOf(key) == -1)
{
keys.push(key);
}
});
}
console.log(keys);
ES6 的
一天在这里;const json_getAllKeys = data => (
data.reduce((keys, obj) => (
keys.concat(Object.keys(obj).filter(key => (
keys.indexOf(key) === -1))
)
), [])
)
是的,它可以写很长的一行;
const json_getAllKeys = data => data.reduce((keys, obj) => keys.concat(Object.keys(obj).filter(key => keys.indexOf(key) === -1)), [])
编辑:如果输入是对象数组类型,则返回所有一阶键
var jsonData = { Name: "Ricardo Vasquez", age: "46", Email: "Rickysoft@gmail.com" };
for (x in jsonData) {
console.log(x +" => "+ jsonData[x]);
alert(x +" => "+ jsonData[x]);
}
此函数应返回 JSON 对象中所有键(即键名(的数组,包括嵌套的键/值对。
function get_all_json_keys(json_object, ret_array = []) {
for (json_key in json_object) {
if (typeof(json_object[json_key]) === 'object' && !Array.isArray(json_object[json_key])) {
ret_array.push(json_key);
get_all_json_keys(json_object[json_key], ret_array);
} else if (Array.isArray(json_object[json_key])) {
ret_array.push(json_key);
first_element = json_object[json_key][0];
if (typeof(first_element) === 'object') {
get_all_json_keys(first_element, ret_array);
}
} else {
ret_array.push(json_key);
}
}
return ret_array
}
在 OP 的原始对象上使用此函数
const op_object =
{
"document":{
"people":[
{
"name":[
"Harry Potter"
],
"age":[
"18"
],
"gender":[
"Male"
]
},
{
"name":[
"hermione granger"
],
"age":[
"18"
],
"gender":[
"Female"
]
}
]
}
}
var all_keys = [];
function get_all_json_keys(json_object, ret_array = []) {
for (json_key in json_object) {
if (typeof(json_object[json_key]) === 'object' && !Array.isArray(json_object[json_key])) {
ret_array.push(json_key);
get_all_json_keys(json_object[json_key], ret_array);
} else if (Array.isArray(json_object[json_key])) {
ret_array.push(json_key);
first_element = json_object[json_key][0];
if (typeof(first_element) === 'object') {
get_all_json_keys(first_element, ret_array);
}
} else {
ret_array.push(json_key);
}
}
return ret_array
}
get_all_json_keys(op_object, all_keys);
console.log(all_keys);
应该屈服
[ 'document', 'people', 'name', 'age', 'gender' ]
注意:这将返回所有键名称的唯一列表。
我们必须"解析"我们的jsonObject
console.log('{"key0":"value0", "key1":"value1"}');
var jsonObject = JSON.parse('{"key0":"value0", "key1":"value1"}')
Object.keys(jsonObject).forEach(key => {
console.log(jsonObject[key]); //values
console.log(key); //keys
})
相关文章:
- 似乎无法使用javascript从AWS 3S中删除密钥
- 正在Javascript Cookie中设置重复密钥
- 从密钥中获取价值.JavaScript
- Javascript对象中的跨浏览器密钥查找性能
- javascript和具有唯一密钥的es6过滤器数组
- 如何在Ionic/Codova应用程序中保护我的Google Maps Javascript V3 API密钥
- 如何在 Windows Mobile 5 浏览器中检测 JavaScript 密钥事件
- 为Google Matrix指定API密钥API Javascript检索用法
- 如何在javascript中获取数组密钥对的json子值
- 从Javascript中读取Django会话密钥cookie
- 使用javascript使用带有API密钥的API
- Javascript File将存储密钥渲染到onload方法中
- 获取密钥代码值 - JavaScript
- 获取在javascript中进行双击时关闭的密钥
- 使用 JavaScript 检测 AltGr 密钥
- 在 Javascript 中保护 API 密钥
- 基于 Java 生成的 RSA 密钥的 JavaScript 加密
- JavaScript混淆和许可证密钥
- 使用 Javascript 获取 Sharepoint 当前用户密钥
- 当数组只有 1 个元素时,从 javascript 数组中获取密钥