我有一個結(jié)構(gòu)體,我需要編組來使用 web 服務(wù),但是在我的測試中,我的 Marshal 函數(shù)只編碼了一個字段:type DataRows []struct { mData interface{}}type DataColumns []struct { mColumnName string mColumnType int mColumnPrecision int mColumnScale int}type DataTables []struct { mDataColumns DataColumns mDataRows DataRows mIndex int}type CFFDataSet struct { mDataTables DataTables mUser string DBServer int}func main() { ds := CFFDataSet{ mDataTables: DataTables{{ mDataColumns: DataColumns{{ mColumnName: "Test", mColumnType: 1, mColumnPrecision: 1, mColumnScale: 1, }}, mDataRows: DataRows{{ mData: "Test", }}, mIndex: 0, }}, mUser: "Teste", DBServer: 2, } marchaled, _ := json.Marshal(ds) fmt.Println(string(marchaled))}回來了$ go run getrest.go{"DBServer":2}有人可以給我一個提示,為什么這不起作用?
1 回答

慕運維8079593
TA貢獻(xiàn)1876條經(jīng)驗 獲得超5個贊
所有其他字段都未導(dǎo)出(如其他語言中的私有),解組器無法訪問它們。這是由字段名稱中的第一個字母的大小寫指定的,需要大寫。
作為參考,這里有一個示例,在您的結(jié)構(gòu)中使用與 json 的字段名稱不同的字段名稱;
var jsonBlob = []byte(`[
{"Name": "Platypus", "Purchase": "Monotremata"},
{"Name": "Quoll", "Purchase": "Dasyuromorphia"}
]`)
type Animal struct {
Name string
Order string `json:"Purchase"`
}
var animals []Animal
err := json.Unmarshal(jsonBlob, &animals)
if err != nil {
fmt.Println("error:", err)
}
fmt.Printf("%+v", animals)
https://play.golang.org/p/iJqaXQY7Ch
- 1 回答
- 0 關(guān)注
- 191 瀏覽
添加回答
舉報
0/150
提交
取消