2016-11-06 17 views
1

JSONオブジェクトを逆直列化したいとします。Typescriptです。私はこれが適切であると判断しましたquestion私は受け入れられた答えのapproach 4を使用したいと思います。しかし、オブジェクトがarraysの他のオブジェクトのメンバーを持っているので、これが私の場合にうまくいくかどうかわからないので、arrayのオブジェクトも同様です。さらに、オブジェクトの依存関係がどこで終了するのかわからなくても、オブジェクトを逆シリアル化するジェネリックメソッド/アプローチを使用したいと思います。オブジェクトの構造は次のようになります。JSONオブジェクトをTypescriptの配列で非直列化する

class Parent { 

s: string; 
x: number; 
children : Array<Child1> 
... 

} 

class Child1 { 

t: string; 
y: number; 
children : Array<Child2> 
... 

} 

class Child2 { 

k: string; 
z: number; 
children : Array<Child3>; 
... 

} 

... 

どのようにこれらのタイプのオブジェクトを逆シリアル化できますか?私は、オブジェクト構造の終わりを当然受け入れるアプローチであっても満足しています。

+0

そのリンクはあなたがデシリアライズしたいJSONの例を追加でき – martin

+0

動作しませんか? –

答えて

1

私はあなたの完全な要件を理解しているかどうかはわかりませんが、基本的には使いたいと言っている方法では、各クラスがデシリアライズを担当します。したがって、親がChild1配列を持っていることを知っている場合、それはjson内のchildren配列を反復処理してから、Child1を呼び出して各子を逆シリアル化することができます。 Child1は、そのように上の子のために同じことを行う、とすることができます

class Parent { 
    s: string; 
    x:number; 
    children: Child1[] = []; 

    deserialize(input) { 
     this.s = input.s; 
     this.x = input.x; 
     for(let child of input.children){ 
      this.children.push(new Child1().deserialize(child)) 
     } 
     return this; 
    } 
} 

class Child1{ 
    t: string; 
    y: number; 
    children: Child2[] = [] 
    deserialize(input) { 
     this.t = input.t; 
     this.y = input.x; 
     for(let child of input.children){ 
      this.children.push(new Child2().deserialize(child)) 
     } 

     return this; 
    } 
} 

class Child2{ 
    deserialize(input) { 
     //... 
     return this; 
    } 

} 
関連する問題