2016-10-11 29 views
-2

私はAngular2 & Typescriptでweppappを開発しようとしています。私はこのようなjsonを持っています:JSONからtypescriptクラス、インターフェイス?

{ 
"homeMenu":{ 
    "aname1":{ 
     "title":"text", 
     "route":"myroute" 
    }, 
    "aname2":{ 
     "title":"text", 
     "route":"myroute" 
    }, 
    "aname3":{ 
     "title":"text", 
     "route":"myroute" 
    }, 
    "aname4":{ 
     "title":"text", 
     "route":"myroute", 
     "homeMenu":{ 
      "aname41":{ 
       "title":"text", 
       "route":"myroute" 
      }, 
      "aname42":{ 
       "title":"text", 
       "route":"myroute" 
      } 
     } 
    }, 
    "aname5":{ 
     "title":"text", 
     "route":"myroute" 
    } 
}} 

私が知らないいくつかのクラスまたはインターフェースで、このタイプのjsonを生成します。私は試しましたが成功しませんでした。私はすべてのメニュー、クラスメニュー、クラスサブメニューで3つ必要です。私は少し類似しているが、私は私のjsonの "aname1"、 "aname2"を持っていない...

私はそれが有効なJSONではないと思った有効です。だから私はあなたが行うことができますインタフェースを使用して、あなたのJSONと私のコメントへの回答に基づいて、この 感謝:)

+0

メニュー項目メニュー自体にすることはできますか?それはいつも 'homeMenu'ですか?トップメニューは 'homeMenu'で、' aname4'では 'homeMenu'があります。 –

+0

ええ、aname41と42にはホームメニューがありません。それは最後の子です – zozourban

+0

しかし、何がルールですか?それは常に 'homeMenu'ですか、それとも任意の文字列ですか? –

答えて

0

を達成するためにいくつかの助けが必要:だから

interface HomeMenu { 
    [name: string]: MenuItem; 
} 

interface MenuItem { 
    title: string; 
    route: string; 
    homeMenu?: HomeMenu; 
} 

interface Menu { 
    homeMenu: HomeMenu; 
} 

let json: Menu = { 
    "homeMenu": { 
     "aname1": { 
      "title": "text", 
      "route": "myroute" 
     }, 
     "aname2": { 
      "title": "text", 
      "route": "myroute" 
     }, 
     "aname3": { 
      "title": "text", 
      "route": "myroute" 
     }, 
     "aname4": { 
      "title": "text", 
      "route": "myroute", 
      "homeMenu": { 
       "aname41": { 
        "title": "text", 
        "route": "myroute" 
       }, 
       "aname42": { 
        "title": "text", 
        "route": "myroute" 
       } 
      } 
     }, 
     "aname5": { 
      "title": "text", 
      "route": "myroute" 
     } 
    } 
} 

code in playground

+0

ありがとう!!しかし、あなたの変数には既にメニューが含まれています 私はそれを使わずに使えますか?テンプレートを使って生成する? test =新しいメニュー(aname)、次にtest.addMenuItem(title、route)?最後にjson.stringify(HomeMenu)を使用すると、jsonを完成させるでしょうか? – zozourban

+0

私はあなたを理解しているか分からない。あなたは状況をより良く説明できますか? –

+0

申し訳ありません、私はこのjsonを持っています。私はangular2&typescriptと1つのアプリを開発したいと私の目標は、あなたがメニューを入力するGUI、このメニューのサブメニュー、別のメニューです...あなたが提出するときに最後に、コードは、一つ前の手順。 私はいくつかのクラスの例で何かを試しました: this.Menu = new Menu(this.name、this.isRedacMenu); this.Navigation.addMenu(this.Menu); および this.Smenu = new Smenu(this.sname); this.Navigation.homeMenu [this.index] .addSMenu(this.Smenu); しかし、私は同じjsonを持っていません。 コードで同じjsonを使用できますか? – zozourban

関連する問題