JSON.stringify는 일반 Javascript 배열에서 작동하지 않습니다.
여기에 뭔가 빠졌지 만 다음 코드 ( 바이올린 )는 빈 곳을 반환합니다.
var test = new Array();
test['a'] = 'test';
test['b'] = 'test b';
var json = JSON.stringify(test);
alert(json);
이 배열을 JSON으로 처리하는 올바른 방법은 무엇입니까?
일반 자바 스크립트은 배열 숫자 인덱스 가있는 데이터를 보유하도록 설계되었습니다 . 이름이 지정된 키를 여기에 넣을 수 있습니다 (정상적인 순서가 지정되고 숫자로 색인 된 데이터를 보유하는 배열에 대한 메타 데이터를 저장하려는 경우 유용 할 수 있음). JSON 배열 데이터 유형 은 배열에 명명 된 키를 누를 수 없습니다 .
배열이 아닌 객체를 사용하십시오.
var test = {}; // Object
test['a'] = 'test';
test['b'] = []; // Array
test['b'].push('item');
test['b'].push('item2');
test['b'].push('item3');
var json = JSON.stringify(test);
alert(json);
위의 좋은 설명과 예. 답을 완성하기 위해 ( JSON.stringify () 배열 기이함 with Prototype.js )를 찾았 습니다 . 일부 사이트는 JSONFilters를 사용하여 자체적으로 JSON을 구현하여 삭제하십시오.
if(window.Prototype) {
delete Object.prototype.toJSON;
delete Array.prototype.toJSON;
delete Hash.prototype.toJSON;
delete String.prototype.toJSON;
}
잘 작동하고 테스트 결과 :
console.log(json);
결과 :
"{"a":"test","b":["item","item2","item3"]}"
여기 에 대한 수정 사항을 게시했습니다.
이 함수를 사용 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);
};
})();
또는 다음과 같이 사용할 수 있습니다.
var test = new Array();
test[0]={};
test[0]['a'] = 'test';
test[1]={};
test[1]['b'] = 'test b';
var json = JSON.stringify(test);
alert(json);
이와 같이 배열을 JSON으로 처리합니다.
Json은 키-값 쌍이 될 것입니다. 그래도 여전히 값이 배열을 배열합니다. 따라서 선택의 "키"를 추가하십시오.
var json = JSON.stringify ({whatver : test});
참조 URL : https://stackoverflow.com/questions/16196338/json-stringify-doesnt-work-with-normal-javascript-array
'ProgramingTip' 카테고리의 다른 글
PHPExcel 및 텍스트 배치 (0) | 2021.01.10 |
---|---|
Python 목록 추가 메소드가 새 목록을 반환하도록 허용 (0) | 2021.01.10 |
Python 3 TypeError : sys.stdout.write ()를 사용하는 바이트가 아니라 str이어야합니다. (0) | 2021.01.10 |
C ++로 통화 값을 저장하는 가장 좋은 방법 (0) | 2021.01.10 |
Mercurial 작업 트리에서 모든 .orig 파일을 자동으로 제거하는 방법은 무엇입니까? (0) | 2021.01.10 |