Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

나만의 코딩 일지

[Javascript] 본문

Javascript

[Javascript]

namgung 2022. 6. 28. 17:50

Json(Javascript Object Notation)

  • Json는 {key:value}로 구문된다.
  • 텍스트 기반으로한 언어이다.
  • 보통 서버와 데이터를 주고 받을 때 사용한다.
  • 특정 프로그램과 상관없이 모든 언어에 사용 가능하다.
  • Json은 순수 데이터 포맷이다. 오직 프로퍼티만 담을 수 있고, 메서드는 담을 수 없다.
  • Json은 문자열과 프로퍼티 작석시 큰 따옴표만 작성 가능하다. (작은 따옴표 사용X)
  • Json은 모든 데이터 타입을 취할 수 있다. 배열이나 오브젝트 외에 단일 문자열이나, 숫자 또한 Json형으로 변환이 가능하다.

stringify( ) 메서드 , parse()

  • stringfy( ) 메서드는 Json으로 형 변환할 때 사용하는 메서드이다.
  • parse() 메서드는 Json형에서 Object 형으로 변환하는 메서드이다.
let json = JSON.stringify(변환하려는 value);
// JSON
// JavaScript Object Notation

// 1. Object to Json
// stringify(obj)
let json = JSON.stringify(true);
console.log(json);

json  = JSON.stringify(['apple', 'banana']);
console.log(json);


const rabbit = {
    name : 'tori',
    color: 'white',
    size: null,
    birthDate : new Date(),

    // 함수는 json에 포함되지 않는다.
    jump : () =>{
        console.log(`${this.name} can jump!`);
    },
};

json = JSON.stringify(rabbit);
console.log(json);

// 특정 값만 전달하고 싶을때 배열을 이용해 값을 받을 수 있다.
json = JSON.stringify(rabbit, ["name"]);
console.log(json);


// 좀더 세밀하게 통제하고 싶을 때 콜백 함수를 사용할 수 있다.
json = JSON.stringify(rabbit, (key, value)=>{
    console.log(`key: ${key}, value: ${value}`);
    return key === 'name' ? 'namgung':value;
});

console.log(json);

//2. Json to Object
// parse(json)
console.clear();
json = JSON.stringify(rabbit);
const obj = JSON.parse(json);
console.log(obj);
rabbit.jump();
// rabbit 객체에서 JSON으로 변환할 경우 함수는 포함되지 않는다, 그렇기 때문에 jump함수는 json에 포함되지 않고 Object로 다시 변환할 경우 json에 포함되지 않기 때문에 변환된 obj에 jump 함수는 존재하지 않는다.
// obj.jump();
console.log(rabbit.birthDate.getDate());

// json으로 받은 obj는 스트링으로 받기 때문에 함수를 사용할 수 없다.
console.log(typeof obj.birthDate);

{
    const obj = JSON.parse(json, (key, value)=>{
        console.log(`key: ${key}, value: ${value}`);
        return key === 'birthDate' ? new Date(value) : value;
    });

    console.log(obj.birthDate.getDate());
}

replacer로 원하는 프로퍼티만 직렬화 하는 방법

let json = Json.stringify(value,[replacer],space );
// or
let json = Json.stringify(value, callback, space);
  • value : 인코딩 하려는 값
  • replacer : json으로 인코딩 하길 원하는 프로퍼티 또는 함수 (null 이거나 아무것도 작성하지 않으면 모든 값을 포함한다.)
  • space : 공백 문자 수, 가독성 목적
const anotherObj = {
    alive:true,
    age:20,
    hobbies : ['Coffee', 'Sleep', 'Working'],
    beverage : {
        morning : 'Coffee',
        afternoon : 'Apple Tea'
    },
    action:function(){
        return "Hello Javascript Object";
    },
    reBeverage:function(){
        return `Time for ${this.beverage.morning}`;
    }
};

function filter(key, value){
    return typeof value === "number" ? undefined : value;
}
// 함수를 이용한 방법
const jsonFilterObj = JSON.stringify(anotherObj, filter, 4);
// 출력 결과 
{
  alive: true,
  hobbies: [ 'Coffee', 'Sleep', 'Working' ],
  beverage: { morning: 'Coffee', afternoon: 'Apple Tea' }
}

// 배열을 이용한 방법
const jsonArrayObj = JSON.stringify(anotherObj, ['alive', 'hobbies'], 4);
// 출력 결과 
{
    "alive": true,
    "hobbies": [
        "Coffee",
        "Sleep",
        "Working"
    ]
}

'Javascript' 카테고리의 다른 글

[Javascript] synchronous 와 asynchronous 차이  (0) 2022.06.28
[Javascript] async, await  (0) 2022.06.28
[Javascript] alert, prompt, confirm 사용법  (0) 2022.06.28
[Javascript] Promise  (0) 2022.06.28
[Javascript] DML구문  (0) 2022.06.28