Map을 포함한 Object JSON stringify
1 | interface MyType { |
실행
1 | const myObject: MyType = { |
output
1 | -----------------map을 포함한 오브젝트 json stringify |
상황
- 서버로 json 형태로 값을 전달하고 싶은데…
- Map은 json stringify로 변환되지 않는다
- 변환하기 위해서는 한번 Array로 변환한 다음에야 가능했다
- 어떤 객체에 맵이 중첩으로 사용된 경우 수동으로 바꿔주는 게 귀찮다
해결
stringify.ts
1 | const stringify = (object: any) => { |
- 객체 안 멤버들을 하나씩 돌아가면서 Map이거나 오브젝트인지 확인한다
- Map이면은 JSON stringify 할 수 있는 Array로 변환한다
- 오브젝트이면 중첩되어있는 Map을 찾기 위해 재귀적으로 반복한다
사용법
myObject
와 같은 중첩 map을 포함하고 있고,- 포함되어있는 Map이
Map<number,string>
일 경우에만 때만 테스트해보아서, 더 다양한 경우에도 동작할지는 모르겠다
- input : { a:… } 처럼 오브젝트를 넣어야 한다
- console.log 찍어봤을 때
{ }
로 묶여있는… - 만약에 그냥 Map인 경우에는 이런 식으로
{ a: new Map() }
한번 감싸주면 된다
repo
Map을 포함한 Object JSON stringify
https://chinsun9.github.io/2021/03/24/Map을-포함한-Object-JSON-stringify/