2016-10-11 29 views
-2

我正在嘗試與Angular2開發weppapp & Typescript。我有這樣一個JSON:JSON to typecript類,接口?

{ 
"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個菜單,一個菜單和一個子菜單。我有一些類似的東西,但我沒有例如「aname1」,「我的json上的」aname2「...

在開始時我認爲這不是一個有效的JSON我有一個JSON驗證器測試,他已驗證。所以,我需要一些幫助來實現這一 謝謝:)

+0

所以菜單項可以是菜單本身?它總是'homeMenu'嗎?因爲頂層菜單是「homeMenu」,然後在「aname4」中有另一個「homeMenu」。 –

+0

是的,但是aname41和42沒有homemenu。這是最後一個孩子 – zozourban

+0

但是規則是什麼?它總是'homeMenu'還是它可以是任何字符串? –

回答

0

根據您的JSON答案和我的意見,使用接口你可以這樣做:

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

謝謝!!,但這裏你的變量已包含菜單, 我可以使用它沒有?並用模板生成角? like test = new menu(aname)then test.addMenuItem(title,route)?並在最後,當我使用json.stringify(HomeMenu)我會有json完成? – zozourban

+0

我不知道我理解你。你能更好地解釋你的情況嗎? –

+0

對不起,我有這個json。我想用angular2&typecript開發一個應用程序,我的目標是使用GUI來輸入你的菜單,這個菜單的子菜單,另一個菜單......當你提交時,代碼生成json以及所有來自前一步。 我嘗試了一些類示例: this.Menu = new Menu(this.name,this.isRedacMenu); (this.Menu); this.Navigation.addMenu(this.Menu); 和 this.Smenu = new Smenu(this.sname); this.Navigation.homeMenu [this.index] .addSMenu(this.Smenu); 但我沒有相同的json。 我可以在你的代碼中使用相同的json嗎? – zozourban