Miễn là tôi có cặp khóa-giá trị unmarshalling là khá thẳng về phía trước nhưng làm thế nào tôi sẽ unmarshall một mảng các loại khác nhau theo thứ tự khác nhau? Các yếu tố duy nhất được xác định rõ ràng và được biết đến nhưng thứ tự thì không.Làm thế nào để unmarshall một loạt các loại khác nhau một cách chính xác?
Tôi không thể đưa ra giải pháp đẹp.
Tôi có cố gắng và báo lỗi trên tất cả các yếu tố không? Có loại hình công đoàn nào có thể làm điều đó cho tôi không?
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)
}
}
}
Chính xác những gì tôi đang tìm kiếm. –
Phần còn thiếu ở bên cạnh tôi là [loại xác nhận] (http://golang.org/ref/spec#Type_assertions) –