json.Unmarshal会尽力将数据放置在最适合您的类型的位置。从技术上讲,您的第一个示例将起作用,但是
Value即使您声明它是地图,您仍尝试使用点符号访问该字段:
这应该给您某种形式的输出:
if data.Type == 'image'{ fmt.Printf("%vn", data.Value["Imagedata"])}…考虑到“ Imagedata”是JSON中的关键。
您可以选择根据需要或期望的结构深度定义类型,或者使用an
interface{}然后对值进行类型声明。如果该Value字段是一个映射,则您将始终访问键,如
Value[key],而该映射项的值就是
interface{}您可以键入assert的值Value[key].(float64)。
至于做更明确的结构,我发现您可以将对象分解为自己的类型,也可以将其嵌套在一个位置:
嵌套(带有匿名结构)
type frame struct { Type string Value struct { Imagedata string `json:"image_data"` }}单独的结构
type frame struct { Type string Value value }type value struct { Imagedata string `json:"image_data"`}我仍然在学习Go自己,所以这是我目前的理解程度:-)。



