JavaScriptのクラスとJSONの相互変換
SkayWayでデータを送信したい
SkyWay使ってたらStreamと別のデータを送りたいと思い、クラスをJSON,JSONをクラスに変換したくなった
が、調べても出てこなかったのでメモ
リファレンス曰く、String
とbyte[]
で送信できる
なので、JSONで文字列→送信して→・・・→文字列で受信→クラスに戻す
を目指す
送信するクラス
データ内容は自作のクラス
class Vec{
constructor(x,y){
this.x = x;
this.y = y;
}
}
Vec.prototype.toString = function(){
return '(' + this.x + ',' + 'this.y' + ')';
}
送信する関数
上記のVec
クラスのデータを以下のSend
関数に投げればいいようにします
function Send(msg){
room.send(msg);
}
受信する関数
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)でクラスを復元します
なので、
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
ができましたとさ
めでたしめでたし
Author And Source
この問題について(JavaScriptのクラスとJSONの相互変換), 我々は、より多くの情報をここで見つけました https://qiita.com/NekoCan/items/adc3ab1f39d2481956fb著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .