반응형
JSON 객체에서 모든 키를 얻는 방법(Javascript)
{"document":
{"people":[
{"name":["Harry Potter"],"age":["18"],"gender":["Male"]},
{"name":["hermione granger"],"age":["18"],"gender":["Female"]},
]}
}
이 JSON의 예에서 다음과 같은 키를 얻고 싶습니다.name
,age
,gender
한 사람 한 사람당.
이거 어떻게 하는 거야?
사용하고 있다Object.keys
이것은 JavaScript 객체에 내장되어 있으며 지정된 객체 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)), [])
EDIT: 입력이 객체 배열 유형인 경우 모든 퍼스트 순서 키를 반환합니다.
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' ]
참고: 그러면 모든 키 이름의 고유한 목록이 반환됩니다.
json Object를 "파싱"해야 합니다.
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
})
언급URL : https://stackoverflow.com/questions/26901971/how-to-get-all-key-in-json-object-javascript
반응형
'programing' 카테고리의 다른 글
각도 테스트UI 부트스트랩 모달 인스턴스 컨트롤러 (0) | 2023.04.02 |
---|---|
PHP를 사용하여 현재 페이지의 전체 URL을 가져오는 방법 (0) | 2023.04.02 |
클래스에 캐스팅할 수 없습니다. 이름이 없는 로더 'app' 모듈에 있습니다. (0) | 2023.04.02 |
angular.grid를 작성하기 위한 ng-timeout (0) | 2023.04.02 |
각도란글로벌 키보드 단축키를 만드는 JS 방법 (0) | 2023.04.02 |