programing

JSON 객체에서 모든 키를 얻는 방법(Javascript)

nicescript 2023. 4. 2. 20:31
반응형

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

반응형