2017-02-13 14 views
1

内のオブジェクトへ戻っunserialiseありES6(ECMAScriptの6)で新しいキーワード「クラス」は、と私のクラスはこのようです:シリアライズ文字列へのオブジェクトとのECMAScript 6

class MyClass { 
    constructor() { 
     this.MyProperty = 0; 
    } 
} 

var obj = new MyClass(); 
console.log(obj); 
//result: 
//MyClass {MyProperty:0} 

var str = JSON.stringify(obj); 
console.log(str); 
//result: 
//"{MyProperty:0}" 

問題は「STR」ですJSON.stringifyを使用して取得したクラス名にはクラス名が含まれておらず、です。したがって、JSON.parse(または他のユーティリティ)は、 'obj'オブジェクトにシリアル化解除できません。 'str'でJSON.parseを使用すると、結果はもはやMyClassクラスのインスタンスにはなりません。

var objFromStr = JSON.parse(str); 
console.log(objFromStr); 
//result: 
//{MyProperty:0} 

ES6でインスタンスを文字列にシリアル化してシリアル化してインスタンスに戻す方法はありますか? JSON.stringify/JSON.parseが機能しない場合、NodeJSで使用するための良いライブラリはありますか?

+1

JSONにはクラスの概念が含まれていません。これは、単純なオブジェクト、配列、およびプリミティブを表します。オブジェクトをクラスインスタンスに再構成する場合は、JSON.parse()の2番目のパラメータとしてカスタム関数(リバイバー)を提供して、解析対象のデータを処理して、望むように返すことができます。 – JLRishe

+1

https://www.npmjs.com/package/json-serialize – JLRishe

+3

クラスに静的メソッドを使用できます。 'MyClass.fromJSON()'を呼び出し、自分でデシリアライズを実装します。 – sdgluck

答えて

0

現在JSON構文にクラス名の定義がないため、JSONをオブジェクトに逆シリアル化する方法はありません。したがって、アンパック機能が必要です。

JSON構文は、デシリアライズ処理のオブジェクトが自動的に実行される前にクラス名を含むように修正する必要があります。

例:

SomeClass { 
    "field1": "value1", 
    "field2": "value2" 
} 
関連する問題