У меня есть структура JSon, которая выглядит какУплотненный JSON демаршалинга с 2d ломтиков в структуры не работает в golang
{
"devices": [
{
"server": {
"bu": {
"add_info": false,
"applications": [
[
"Systems",
12
],
[
"SomeProject",
106
]
],
"name": [
[
"SomeName",
4
],
[
"CommonName",
57
]
],
"owners": [
"SomeOwner1",
"SomeOwner2"
],
"users": [
"SomeUser1",
"SomeUser2"
]
}
}
}
]
}
Я пытаюсь добавить его на структуру, а структура выглядит
type TwoD [][]string
type MainContainer struct {
Devices []struct{
Server struct{
Bu struct{
Add_info string `json:"add_info"`
Applications TwoD `json:"applications"`
Name TwoD `json:"name"`
Owners []string `json:"owners"`
Users []string `json:"users"`
} `json:"bu"`
} `json:"server"`
} `json:"devices"`
}
Однако, когда я печатаю структуру, я получаю только одно значение из 2D-фрагмента и ничего за его пределами.
func main() {
jsonfile, err := ioutil.ReadFile("./search.json")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
var jsonobject MainContainer
json.Unmarshal(jsonfile, &jsonobject)
fmt.Printf("%v", jsonobject)
}
{[{{{ [[Systems ]] [] [] []}}}]}
Но если я опуская 2d ломтиков в структуры как
type MainContainer struct {
Devices []struct{
Server struct{
Bu struct{
Add_info string `json:"add_info"`
//Applications TwoD `json:"applications"`
//Name TwoD `json:"name"`
Owners []string `json:"owners"`
Users []string `json:"users"`
} `json:"bu"`
} `json:"server"`
} `json:"devices"`
}
все печатается
{[{{{ [SomeOwner1 SomeOwner2] [SomeUser1 SomeUser2]}}}]}
Может кто-то помочь мне определить, что здесь не так?
Here - ссылка на игровую площадку golang со структурой и образцом json. Два фрагмента TwoD комментируются в структуре.
Примечание: отредактирована ссылка на детскую площадку с одним расколом 2d, без разметки, чтобы можно было заметить разницу, и изменил строку типа на bool, как указано @cnicutar, Спасибо.
Спасибо @cnicutar. Я пропустил это. Однако, когда я изменил его на bool, он все равно останавливается на многомерном массиве. https://play.golang.org/p/2HMUi6JadG Я расколол часть 2d среза в структуре, и вы можете увидеть разницу. – nohup
Ничего, ваша ошибка в ловушке помогла мне. Это фрагмент строки и числа, поэтому я установил пустой интерфейс – nohup
@nohuo stop go development, [читать это] (https://golang.org/doc/effective_go.html), а затем продолжить разработку. – eduncan911