キーと値のペアがある限り、アンマーシャリングは非常に簡単ですが、異なるタイプの配列を異なる順序でアンマーシャリングするにはどうすればよいでしょうか? 単一の要素は明確に定義され、知られていますが、順序は不明です。
私は美しい解決策を思い付くことができません。
すべての要素で試行錯誤しますか? 私のためにそれを行うことができるある種のユニオンタイプはありますか?
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)
}
}
}