Dopóki mam pary klucz-wartość, niemamostrzanie jest dość proste, ale w jaki sposób mogę rozpakować tablicę różnych typów w innej kolejności? Pojedyncze elementy są dobrze zdefiniowane i znane, ale kolejność nie jest.Jak poprawnie odfiltrować tablicę różnych typów?
Nie mogę wymyślić pięknego rozwiązania.
Czy próbowałbym pomyłek we wszystkich elementach? Czy jest jakiś rodzaj związku, który mógłby to dla mnie zrobić?
package main
import (
"encoding/json"
"fmt"
)
var my_json string = `{
"an_array":[
"with_a string",
{
"and":"some_more",
"different":["nested", "types"]
}
]
}`
type MyInner struct {
And string
Different []string
}
type MyJSON struct {
An_array []json.RawMessage
}
func main() {
var my_json_test MyJSON
e := json.Unmarshal([]byte(my_json), &my_json_test)
if e != nil {
fmt.Println(e)
} else {
for index, value := range my_json_test.An_array {
fmt.Println("index: ", index)
fmt.Println("value: ", string(value))
}
var my_inner MyInner
err := json.Unmarshal(my_json_test.An_array[1], &my_inner)
if err != nil {
fmt.Println(err)
} else {
fmt.Println("inner structure: ", my_inner)
}
}
}
Dokładnie tego, czego szukałem. –
Brakującą częścią po mojej stronie było [typ potwierdzenia] (http://golang.org/ref/spec#Type_assertions) –