2014-12-28 23 views
8

Jak mogę zagnieżdżać strukturę zagnieżdżoną w JSON? Wiem, jak kierować strukturą bez żadnych zagnieżdżonych struktur. Jednak gdy próbuję zrobić odpowiedź JSON wygląda następująco:Marszałek zagnieżdżono struktury w JSON

{"genre": {"country": "taylor swift", "rock": "aimee"}} 

Wpadam w problemy.

Mój kod wygląda następująco:

Go:

type Music struct { 
    Genre struct { 
    Country string 
    Rock string 
    } 
} 

resp := Music{ 
    Genre: { // error on this line. 
    Country: "Taylor Swift", 
    Rock: "Aimee", 
    }, 
} 

js, _ := json.Marshal(resp) 
w.Write(js) 

Jednakże pojawia się błąd

Missing type in composite literal

Jak mogę rozwiązać ten problem?

Odpowiedz

13

Oto dosłowny kompozytowe dla danego typu:

resp := Music{ 
    Genre: struct { 
     Country string 
     Rock string 
    }{ 
     Country: "Taylor Swift", 
     Rock: "Aimee", 
    }, 
} 

playground example

Trzeba powtórzyć typ anonimowy w dosłownym. Aby uniknąć powtórzeń, zalecam zdefiniowanie typu dla gatunku. Użyj również znaczników pól, aby określić małe litery w wynikach.

type Genre struct { 
    Country string `json:"country"` 
    Rock string `json:"rock"` 
} 

type Music struct { 
    Genre Genre `json:"genre"` 
} 

resp := Music{ 
    Genre{ 
     Country: "Taylor Swift", 
     Rock: "Aimee", 
    }, 
} 

playground example

+0

dziękuję! pierwszy przykład nie zadziałał mimo to – user3918985

Powiązane problemy