IT TIP

JSON에 대한 JavaScript 연관 배열

itqueen 2020. 10. 23. 19:51
반응형

JSON에 대한 JavaScript 연관 배열


JavaScript 연관 배열을 JSON으로 어떻게 변환 할 수 있습니까?

나는 다음을 시도했다 :

var AssocArray = new Array();

AssocArray["a"] = "The letter A"

console.log("a = " + AssocArray["a"]);

// result: "a = The letter A"

JSON.stringify(AssocArray);

// result: "[]"

배열에는 숫자 키가있는 항목 만 있어야합니다 (배열도 객체이지만 실제로 혼합해서는 안 됨).

배열을 JSON으로 변환하면 프로세스는 숫자 속성 만 고려합니다. 다른 속성은 단순히 무시되므로 결과로 빈 배열이 생성됩니다. length배열 을 보면 이것이 더 분명 할 것입니다 .

> AssocArray.length
0

종종 "연관 배열"이라고하는 것은 실제로 JS의 객체 일뿐입니다.

var AssocArray = {};  // <- initialize an object, not an array
AssocArray["a"] = "The letter A"

console.log("a = " + AssocArray["a"]); // "a = The letter A"
JSON.stringify(AssocArray); // "{"a":"The letter A"}"

객체의 속성은 배열 표기법 또는 점 표기법을 통해 액세스 할 수 있습니다 (키가 예약 된 키워드가 아닌 경우). 이와 AssocArray.a동일하다 AssocArray['a'].


JavaScript에는 연관 배열이 없습니다. 그러나 명명 된 속성을 가진 개체가 있으므로 "배열"을로 초기화하지 마십시오 new Array. 그러면 일반 개체가됩니다.


개체를 개체로, 배열을 배열로 유지하는 것이 아마도 가장 좋은 방법이라는 데 동의했습니다. 그러나 배열로 취급하는 명명 된 속성이있는 Object가있는 경우 다음과 같이 수행 할 수 있습니다.

let tempArr = [];
Object.keys(objectArr).forEach( (element) => {
    tempArr.push(objectArr[element]);
});

let json = JSON.stringify(tempArr);

여기 에 대한 수정 사항을 게시했습니다.

이 함수를 사용 JSON.stringify하여 인코딩 을 수정 하고 arrays스크립트 시작 부분에 게시 할 수 있습니다 (자세한 내용은 위 링크 확인).

// Upgrade for JSON.stringify, updated to allow arrays
(function(){
    // Convert array to object
    var convArrToObj = function(array){
        var thisEleObj = new Object();
        if(typeof array == "object"){
            for(var i in array){
                var thisEle = convArrToObj(array[i]);
                thisEleObj[i] = thisEle;
            }
        }else {
            thisEleObj = array;
        }
        return thisEleObj;
    };
    var oldJSONStringify = JSON.stringify;
    JSON.stringify = function(input){
        if(oldJSONStringify(input) == '[]')
            return oldJSONStringify(convArrToObj(input));
        else
            return oldJSONStringify(input);
    };
})();

객체를 배열로 밀어 넣고 싶을 수 있습니다.

enter code here

var AssocArray = new Array();

AssocArray.push( "The letter A");

console.log("a = " + AssocArray[0]);

// result: "a = The letter A"

console.log( AssocArray[0]);

JSON.stringify(AssocArray);

참고 URL : https://stackoverflow.com/questions/4425289/javascript-associative-array-to-json

반응형