Javascript – JSON(JavaScript Object Notation)

ㆍJSON ( JavaScript Object Notation  자바스크립트-객체-표기법 )
JSON :JavaScript Object Notaion (notaion 뜻 : 표기법)
AJAX : Asyncrnouse Javascript And XML
XHR   : XMLHTTPRequest

// Javascript Object 를 Json 으로 변환
// Serialize(직렬화) : 객체를 네트워크 또는 파일 등으로  전송 후 다른곳에서 다시 객체화하여 사용할수 있도록 // 문자열로 만들어 전송전에 하는 방법
// 이때 직렬화되어 온 객체를  역직렬화(Deserilize)하여 다시 객체로 사용함

// let val = JSON.stringify(객체)
// let val = JSON.stringify(객체 ,[‘key1′,’key2′,’key3’ ….]) 객체에서 Json 변환할 key1,key2,key3 에 나열
// let val = JSON.stringify(객체 , (키 , 값) => { return 값}) 객체에서 루프를 돌면서 (키 ,값) 으로  callback

 

let myObject = [“test1”, “BMW” , “some moeny”];
let myJson = JSON.stringify(myObject);
console.log(myJson); //[“test1″,”BMW”,”some moeny”]  //  더블 쿼테이션 Json 표준
// 클래스로 만든 객체를 Json 으로 (String) 으로 변환 (Serialize) 하기
class myClass {
    constructor( name , age , job)
    {
        this.name = name;
        this.age = age;
        this.job = job;
    }
    run = function()  // run() {} 와 같음  클래스 에서는 funtion run 쓰지 않음
    {
        return “runnig man”
    }
    stop = function ()  // stop() { ~  }  와 같음  클래스 에서는 funtion  run 쓰지 않음
    {
        return “stopnow”;
    }
    walking()
    {
        return “walking…. now”    }
    set myAge(val)
    {
        this.age = val
    }
    get myAge()
    {
        return this.age;
    }

}

// 클래스의 객체 → stringify
let myObj2 = new myClass(“test” , 10 , “officer”);
console.log(myObj2)    // 객체 타입으로 출력 ;{name: ‘test’, age: 10, job: ‘officer’, run: ƒ, stop: ƒ}

 

let myJson2 = JSON.stringify(myObj2);
console.log(myJson2)  // {“name”:”test”,”age”:10,”job”:”officer”}  
//멤버변수만 JSON 가능(프로퍼티 및 메서드는  문자열화 안됨)
let myJson2_1 = JSON.stringify(myObj2 , [“name”]) // 원하는 요소만 문자열화 하기console.log(myJson2_1) // {“name”:”test”}

 

//객체로 생성

let myObj3 = {
    name : “test3” ,
    age : 30 ,
    job : “tester”,
    addr : “in korea”,
    set myAddr(val) { this.addr = val; },
    get myAddr() { return this.addr} , // Class 에서됨
    getMyAge : () => { return this.age;} // Class 에서 안됨 객체만됨
}
console.log(myObj3)
// 객체를  → stringify
let myJson3 = JSON.stringify(myObj3);
console.log(myJson3)
// {“name”:”test3″,”age”:30,”job”:”tester”,”addr”:”in korea”,”myAddr”:”in korea”}
// 객체 에서 : 프로퍼티 및 메서드는 사라지고 멤버변수만 남음
var rtnVal;
let myJson4 = JSON.stringify(myObj3 , (k,v)=>{
    if (k == “addr”)    // key == addr 인 곳의 값을  in USA 로 변경
        rtnVal = “in USA”;
    else
        rtnVal = v;      // addr 이 아닌 키 들의 값을 리턴해줘야 객체가 유지됨 객체 안깨짐 (반드시)
    return rtnVal;
});
// Json 타입의 데이터를(String) Javascript 의 Object 로 변환하기
// Deserialize(역직렬화) : 네트워크 또는 파일 등으로  직렬화되어 전송 온 데이터를 다시 객체로 사용할 수 있게 하는 방법
// 이때 직렬화되어 온 데이터를 역직렬화(Deserilize)하여 다시 객체로 사용함
let myJsonX = JSON.stringify(myObj2);
console.log(myJsonX)  // {“name”:”test”,”age”:10,”job”:”officer”}  JSON 데이터(string) 로 변환(serialize)

 

let dMyObj = JSON.parse(myJson2); // parse : JSON 데이터를 객체로 만듬
console.log(dMyObj); // {name: ‘test’, age: 10, job: ‘officer’}

 

var rtnVal;
let dMyObj2 = JSON.parse(myJson2 , (k,v) =>{
    if (k == “age”)
        rtnVal = v + 1;  // 만약 age 항목이면  나이에 1살을 더함
    else
        rtnVal = v;       // age 항목이 아니면 반드시 원래 값을 리턴해줘야 객체가 유지됨 (반드시)
    return rtnVal;
});
console.log(dMyObj2);  // {name: ‘test’, age: 11, job: ‘officer’}

console.log(dMyObj2.name) // 객체멤머로의 접근이 가능해짐

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다