JSON.stringify() 함수는 JavaScript 객체나 값을 JSON 형식의 문자열로 변환하는 내장 함수입니다. 이 함수를 사용하면 JavaScript 객체를 직렬화하여 JSON 형식으로 표현할 수 있습니다.
JSON.stringify() 함수의 기본적인 사용법은 다음과 같습니다
:
const obj = {
name: "John",
age: 30,
city: "New York"
};
const jsonString = JSON.stringify(obj);
console.log(jsonString);
// 출력: {"name":"John","age":30,"city":"New York"}
위의 예시에서 obj 객체는 JSON.stringify() 함수를 사용하여 JSON 형식의 문자열로 변환됩니다.
변환된 JSON 문자열은 console.log를 통해 출력됩니다.
JSON.stringify() 함수는 두 번째 매개변수와 세 번째 매개변수를 선택적으로 받을 수 있습니다.
- 두 번째 매개변수는 필터링 함수(replacer)로, 변환할 속성을 선택적으로 포함하거나 제외하는 데 사용됩니다.
이 함수는 각 키(key)와 값 (value) 쌍을 받아 변환 결과를 반환해야 합니다.
- 세 번째 매개변수는 들여쓰기(indentation)로, 변환된 JSON 문자열의 가독성을 높이기 위해 사용됩니다.
숫자를 전달하면 해당 숫자만큼 들여쓰기가 적용되고, 문자열을 전달하면 해당 문자열이 들여쓰기로 사용됩니다.
다음은 두 번째 매개변수와 세 번째 매개변수를 사용한 예시입니다
:
const obj = {
name: "John",
age: 30,
city: "New York",
isAdmin: true
};
const jsonString = JSON.stringify(obj, ["name", "age"], 2);
console.log(jsonString);
/*
출력:
{
"name": "John",
"age": 30
}
*/
위의 예시에서 두 번째 매개변수로 ["name", "age"] 배열을 전달하여 "name"과 "age" 속성만 변환에 포함시킵니다. 세 번째 매개변수로 2를 전달하여 들여쓰기를 2칸으로 설정합니다.
JSON.stringify() 함수는 JavaScript 객체나 값을 JSON 형식으로 변환하는 강력한 기능을 제공합니다. 이를 통해 데이터 교환이나 저장, 네트워크 통신 등 다양한 상황에서 활용할 수 있습니다.
객체를 JSON의 형태로 변환하거나 JSON을 객체의 형태로 변환하는 방법입니다. 이를 위한 메서드는 다음과 같습니다.
function stringifyJSON(obj) {
// your code goes here
// 기본 데이터 유형 (문자열, 숫자, 불리언) 처리
};
// 다음 코드는 결과 제출을 위한 코드입니다. 신경 쓰지 않아도 좋습니다.
if (typeof window === "undefined") {
module.exports = stringifyJSON;
}
// 기본 데이터 유형 (문자열, 숫자, 불리언) 처리
if (typeof obj === "string") {
return '"' + obj + '"';
}
if (typeof obj === "number" || typeof obj === "boolean") {
return String(obj);
}
// null 처리
if (obj === null) {
return "null";
}
// 배열 처리
if (Array.isArray(obj)) {
const jsonArray = obj.map(element => stringifyJSON(element));
return "[" + jsonArray.join(",") + "]";
}
// 객체 처리
if (typeof obj === "object") {
const jsonProperties = [];
for (let key in obj) {
if (typeof obj[key] !== "function" && obj[key] !== undefined) {
const jsonKey = '"' + key + '"';
const jsonValue = stringifyJSON(obj[key]);
jsonProperties.push(jsonKey + ":" + jsonValue);
}
}
return "{" + jsonProperties.join(",") + "}";
}
// 그 외의 경우 처리
return undefined;
/**
* 1. Browser에 존재하는 JSON.stringfy 함수를 직접 구현해 봅니다.
* JSON.stringfy 함수는 input 값을 JSON 형식으로 변환합니다.
* 단, undefined와 function은 JSON으로 생략되거나 null로 변환됩니다.
*
* 2. stringfyJSON은 아래와 같이 작동합니다.
* - Boolean이 input으로 주어졌을 경우
* stringifyJSON(true); // 'true'
* - String이 input으로 주어졌을 경우
* stringifyJSON('foo'); // '"foo"'
* - Array가 input으로 주어졌을 경우
* stringifyJSON([1, 'false', false]); // '[1,"false",false]'
* - Object가 input으로 주어졌을 경우
* stringifyJSON({ x: 5 }); // '{"x":5}'
* - undefined, function이 주어졌을 경우
* stringifyJSON(undefined) // undefined
* stringifyJSON(function(){}) // undefined
* stringifyJSON({ x: undefined, y: function(){} }) // '{}'
*
* 3. spec/stringifyJSONSpec.js의 stringifiableObjects 배열을 참고해서 테스트에서 어떤 input 값들이
* 주어지고, 어떻게 stringify해 주어야 할지 생각해 보세요.
*
* 4. 그냥 테스트 통과를 하고 싶으시다면, 다음과 같이 구현하면 될 거예요.
* const stringifyJSON = JSON.stringify;
*
* 하지만 이 과제의 목적은 재귀를 공부하는 것이니, 처음부터 구현해봐야겠지요?:
*/
function stringifyJSON(obj) {
// your code goes here
// 기본 데이터 유형 (문자열, 숫자, 불리언) 처리
if (typeof obj === "string") {
return '"' + obj + '"';
}
if (typeof obj === "number" || typeof obj === "boolean") {
return String(obj);
}
// null 처리
if (obj === null) {
return "null";
}
// 배열 처리
if (Array.isArray(obj)) {
const jsonArray = obj.map(element => stringifyJSON(element));
return "[" + jsonArray.join(",") + "]";
}
// 객체 처리
if (typeof obj === "object") {
const jsonProperties = [];
for (let key in obj) {
if (typeof obj[key] !== "function" && obj[key] !== undefined) {
const jsonKey = '"' + key + '"';
const jsonValue = stringifyJSON(obj[key]);
jsonProperties.push(jsonKey + ":" + jsonValue);
}
}
return "{" + jsonProperties.join(",") + "}";
}
// 그 외의 경우 처리
return undefined;
};
// 다음 코드는 결과 제출을 위한 코드입니다. 신경 쓰지 않아도 좋습니다.
if (typeof window === "undefined") {
module.exports = stringifyJSON;
}
stringifyJSON는 JSON.stringify 함수를 실행했을 때와 같은 결과를 리턴해야 합니다.
✓ 객체는 문자열 "9"로 변환되어야 합니다
✓ 객체는 문자열 "null"로 변환되어야 합니다
✓ 객체는 문자열 "true"로 변환되어야 합니다
✓ 객체는 문자열 "false"로 변환되어야 합니다
✓ 객체는 문자열 ""Hello world""로 변환되어야 합니다
✓ 객체는 문자열 "[]"로 변환되어야 합니다
✓ 객체는 문자열 "[8]"로 변환되어야 합니다
✓ 객체는 문자열 "["hi"]"로 변환되어야 합니다
✓ 객체는 문자열 "[8,"hi"]"로 변환되어야 합니다
✓ 객체는 문자열 "[1,0,-1,-0.3,0.3,1343.32,3345,0.00011999]"로 변환되어야 합니다
✓ 객체는 문자열 "[8,[[],3,4]]"로 변환되어야 합니다
✓ 객체는 문자열 "[[[["foo"]]]]"로 변환되어야 합니다
✓ 객체는 문자열 "{}"로 변환되어야 합니다
✓ 객체는 문자열 "{"a":"apple"}"로 변환되어야 합니다
✓ 객체는 문자열 "{"foo":true,"bar":false,"baz":null}"로 변환되어야 합니다
✓ 객체는 문자열 "{"boolean, true":true,"boolean, false":false,"null":null}"로 변환되어야 합니다
✓ 객체는 문자열 "{"a":{"b":"c"}}"로 변환되어야 합니다
✓ 객체는 문자열 "{"a":["b","c"]}"로 변환되어야 합니다
✓ 객체는 문자열 "[{"a":"b"},{"c":"d"}]"로 변환되어야 합니다
✓ 객체는 문자열 "{"a":[],"c":{},"b":true}"로 변환되어야 합니다
✓ 함수와 undefined는 stringify되지 않습니다.
21 passing (9ms)
| [FE 45] _23.06.21 _ Day 49 ( [React] 상태 관리 ) (0) | 2023.06.21 |
|---|---|
| [FE 45] _23.06.13 _ Day 43 ( [UI/UX] ) (1) | 2023.06.13 |
| [FE 45] _23.06.09 _ Day 41 ( [자료구조/알고리즘] 재귀) (0) | 2023.06.12 |
| [FE 45] _23.06.08 _ Day 40 (Section 2 회고 & 모의 기술 면접) (0) | 2023.06.08 |
| [FE 45] _23.06.05 _ Day 38 ([Web Server] 기초) (0) | 2023.06.05 |