Go语言 为json.RawMessage类型调用MarshalJSON时发生JSON错误

vngu2lb8  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(123)

尝试封送此结构时出现以下错误
json:为json类型调用MarshalJSON时出错。RawMessage:JSON输入意外结束
为下面结构的对象

type Chart struct {
    ID          int             `json:"id,omitempty" db:"id"`
    Name        string          `json:"name,omitempty" db:"name"`
    Type        string          `json:"type,omitempty" db:"type"`
    DashboardID int             `json:"dashboard_id,omitempty"`
    SourceType  string          `json:"source_type,omitempty" db:"source_type"`
    Data        json.RawMessage `json:"graph_data,ommitempty"`
}

func main() {
    chart := Chart{}
    chart.ID = 1
    chart.Name = "Jishnu"
    str, err := json.Marshal(chart)
    fmt.Println(err)
}
sbtkgmzw

sbtkgmzw1#

通过使Chart.Data成为指针修复

Data        *json.RawMessage `json:"data,omitempty"`

Go 1.8(目前是rc3)将正确处理指针和非指针json.RawMessage的编组。
修复提交:https://github.com/golang/go/commit/1625da24106b610f89ff7a67a11581df95f8e234

相关问题