// 01. boolean true 값을 string true 로 변환
let json = JSON.stringify(true);
console.log(json); // true

// 02. 배열 자체를 string 으로 변환
json = JSON.stringify(['apple', 'banana']);
console.log(json); // ["apple","banana"]

// 03. number 1994 값을 string 으로 변환
json = JSON.stringify(1994);
console.log(json); // 1994

// 04. object rabbit 값을 string 으로 변환
const rabbit = {
    name: 'tori',
    color: 'white',
    size: null,
    birthDate: new Date(),

    jump: () => {
        console.log(`${name} can Jump!`);
        return 1;
    }
    //symbol: Symbol("id")
};

json = JSON.stringify(rabbit);
console.log(json);
// {"name":"tori","color":"white","size":null,"birthDate":"2021-03-18T08:00:08.677Z"}

// ※ jump와 같은 함수는 JSON 의 string의 변환에 포함되지 않는다.
// ※ JavsScript 에 만 존재하는 함수 Symbol 함수도 JSON 의 string의 변환에 포함되지 않는다.

@param value, @param replacer

// 01. object value 조정하여 변환하기 (1)
// 배열을 통해 변환 --> replacer?: (number | string)[] | null) => any
json = JSON.stringify(rabbit, ['name', 'color', 'size']);
console.log(json); // {"name":"tori","color":"white","size":null}
// --> object rabbit 값을 세밀조정하여 string 으로 변환

// 02. object value 조정하여 변환하기 (2)
// callback 함수를 통해 변환 --> replacer?: (this: any, key: string, value: any) => any
json = JSON.stringify(rabbit, (key, value) => {
    console.log(`key: ${key}, value: ${value}`);
    return value;
});
console.log(json);
// {"name":"tori","color":"white","size":null,"birthDate":"2021-03-18T08:21:21.981Z"}