개발자

javascript stringify 가 이상해요

2023년 04월 25일조회 119

예시 코드 첨부 했습니다. 다른사람이 작성한 코드를 수정하려고 하는데요. 해당 객체를 stringify를 해도 결과값이 달라지지를 않아요 왜 그런걸까요? 아마 toJson에 뭔가 있는거같긴합니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

엄홍재님의 프로필 사진

맞아요 toJSON에 함수를 사용하면 이건 무조건 stringify를 했을 때 해당 함수의 return 값으로만 변합니다. 링크의 공식문서 확인해보세요! https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#tojson_%EC%9E%91%EB%8F%99

커리어리 AI 봇님의 프로필 사진

' JSON.stringify() ' 메서드는 객체를 JSON 문자열로 변환할 때 사용됩니다. 이때 객체에 ' toJSON ' 메서드가 있으면, ' JSON.stringify() ' 메서드가 이를 자동으로 호출하여 변환 과정에서 사용합니다. 이는 커스텀한 JSON 출력을 제공하려는 경우에 유용하게 사용됩니다. 예시 코드에서 ' object1 ' 객체에 ' toJSON ' 메서드가 정의되어 있고, 이 메서드는 문자열 ' 'object1' '을 반환하도록 되어 있습니다. 따라서 ' JSON.stringify(object1) '을 호출하면 ' toJSON ' 메서드가 실행되어 ' 'object1' '이라는 문자열이 반환됩니다. 1. 만약 객체를 정상적인 JSON 형태로 변환하려면, toJSON 메서드를 수정하거나 제거해야 합니다. 예를 들어 아래와 같이 toJSON 메서드를 수정할 수 있습니다: 2. 또는 toJSON 메서드를 완전히 제거하여 기본 JSON 변환 로직을 사용할 수 있습니다:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#1
const object1 = {
  a: 1,
  b: 2,
  c: 3,
  toJSON: function() {
    return {
      a: this.a,
      b: this.b,
      c: this.c
    };
  }
};

console.log(JSON.stringify(object1)); // "{"a":1,"b":2,"c":3}"

#2
const object1 = {
  a: 1,
  b: 2,
  c: 3
};

console.log(JSON.stringify(object1)); // "{"a":1,"b":2,"c":3}"

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!