2016-10-11 3 views
-2

저는 Angular2 & Typescript를 사용하여 weppapp을 개발하려고합니다. 나는 이런 json을 가지고있다 :JSON to 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 유효성 검사기로 테스트했고 유효합니다. 그래서 난 당신이 할 수있는 인터페이스를 사용하여 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와 하나의 애플 리케이션을 개발하고 내 목표는 당신이 메뉴,이 메뉴에 대한 하위 메뉴, 다른 메뉴를 입력 GUI를 함께하고 ... 결국 당신이 제출할 때 코드는 모든 정보와 json을 생성 이전 단계. 몇 가지 클래스 예제로 뭔가를 시도 : 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을 사용할 수 있습니까? – zozourban

관련 문제