Javascript – JSON(JavaScript Object Notation)
ㆍJSON ( JavaScript Object Notation 자바스크립트-객체-표기법 )
JSON :JavaScript Object Notaion (notaion 뜻 : 표기법)
AJAX : Asyncrnouse Javascript And XML
XHR : XMLHTTPRequest
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 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: ƒ}
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 가능(프로퍼티 및 메서드는 문자열화 안됨)
//멤버변수만 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)
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’}
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) // 객체멤머로의 접근이 가능해짐