JavaScript 클래스와 JSON 간의 변환

SkayWay로 데이터를 보내고 싶습니다.



SkyWay를 사용하면 Stream과 다른 데이터를 보내고 싶었고 클래스를 JSON, JSON을 클래스로 변환하고 싶어졌습니다.
하지만 조사해도 나오지 않았기 때문에 메모

참조 가라, Stringbyte[]
그래서 JSONで文字列→送信して→・・・→文字列で受信→クラスに戻す

보내는 클래스



데이터 내용은 자작 클래스

Vec.js
class Vec{
  constructor(x,y){
    this.x = x;
    this.y = y;
  }
}
Vec.prototype.toString = function(){
  return '(' + this.x + ',' + 'this.y' + ')';
}

보내는 함수



위의 Vec 클래스의 데이터를 아래의 Send 함수에 던져야합니다.

뭔가 그 함수.js
function Send(msg){
  room.send(msg);
}

받는 함수



받습니다. js
function setupRoomEventHandlers(room){
  room.on(`stream`,function(stream){
    接続時の処理;
  });
  //他、peerLeaveとかcloseとかの関数
  //略

  //room.sendで送信したデータは「data」で受信する
  room.on('data',function({data,src}) => {
    //ここに受信時の処理
  });

}

클래스에서 JSON (class to JSON)


JSON.stringigy(クラス) 에서 JSON이 될 수 있기 때문에
보내고 싶은 타이밍에 이런 느낌으로 마우스의 위치 송신합니다
Send(JSON.stringigy(new Vec(mouseX,mouseY)));

JSON에서 클래스(JSON to class)



수신 데이터는 Object가 도착하기 때문에,
JSON.parse 에서 JSON으로 만들고 Object.assign(클래스,json) 에서 클래스를 복원합니다.
그러므로

받습니다. js
function setupRoomEventHandlers(room){
  //略

  //room.sendで送信したデータは「data」で受信する
  room.on('data',function({data,src}) => {
    let json = JSON.parse(data);
    console.log(Object.assign(new Vec(),json));
  });

}

그렇다면 이렇게 ↓받을 수 있었기 때문에 JSON to class & class to JSON
죄송합니다.

좋은 웹페이지 즐겨찾기