object에 이것저것 property를 실컷 세팅해놓고 JSON.stringify() 함수에 담갔다 뺐더니 빈 배열을 표시하는 문자열만 반환되는 허무한 경우가 있었다.


원인은 arr 변수가 object가 아니라 array로 선언되었던 것이었다.


잠시 정신이 나간 상태에서 신내림을 받고 코딩하다 일어날 수 있는 실수인데,

array의 경우 일반적으로는 object처럼 named property를 이용해서 값을 할당하거나 꺼내 쓰거나 할 수 있지만,

JSON.stringify()의 경우 array의 named property(non-enumerable property)는 무시하는 방식으로 동작한다는게 문제다.


쉽게 이해하기 위해 부연하자면,

array에는 length 같은 built-in property가 있지만 console.log() 함수로 출력해보면 length는 출력되지 않는 것과 동일하다고 보면 된다.


array라도 named property가 아니라 정상적인 index를 할당받은 값은 JSON.stringify를 이용해 문자열로 변환이 가능하다.




[참고]

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify






저작자 표시
신고
Posted by bloodguy

댓글을 달아 주세요



티스토리 툴바