JSON.stringify에서 정의되지 않은 값을 유지하는 방법

2872 단어 javascript
JSON specundefined 값을 허용하지 않으므로 정의되지 않은 값을 포함하는 객체를 문자열화하려고 하면 키가 제거됩니다.

const person = { name: 'Peter', age: undefined };

JSON.stringify(person);
// '{"name":"Peter"}'


반환 값에 유지하는 해결 방법undefined이 있지만 사양의 일부가 아니기 때문에 문자열을 다시 JSON으로 구문 분석할 수 없습니다. 대신 유효한 null로 바꿀 수 있습니다.

JSON.stringify에는 stringify 프로세스 중에 속성을 재귀적으로 변환할 수 있는 선택적 두 번째 매개 변수replacer가 있습니다.

JSON.stringify의 replacer 매개변수를 사용하여 undefined 값을 허용되는 값(예: null)으로 바꿀 수 있습니다.

const person = { name: 'Peter', age: undefined };

function replacer(key, value) {
  return value === undefined ? null : value;
}

JSON.stringify(person, replacer);
// '{"name":"Peter","age":null}'


이것이 유용할 수 있는 사용 사례의 예로는 정의되지 않은 값을 서버에 알려야 하는 경우 네트워크 요청 페이로드가 있습니다. POST 요청에는 문자열 본문이 있습니다. 개체를 통해 보내야 하는 경우 요청을 해야 합니다JSON.stringify. 위의 접근 방식은 정의되지 않은 값을 보내는 데 도움이 됩니다(서버가 null를 허용 가능한 값으로 이해하는 경우).

좋은 웹페이지 즐겨찾기