Struct 结构尚未完全封送
我有一个使用Web服务需要封送的结构,但在我的测试中,封送函数只编码一个字段:Struct 结构尚未完全封送,struct,go,Struct,Go,我有一个使用Web服务需要封送的结构,但在我的测试中,封送函数只编码一个字段: type DataRows []struct { mData interface{} } type DataColumns []struct { mColumnName string mColumnType int mColumnPrecision int mColumnScale int } type DataTables []struct {
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}
有人能给我一个提示吗?为什么不工作?您的所有其他字段都未报告(如其他语言中的private),解组程序无法访问它们。这是由字段名中第一个字母的大小写指定的,需要大写 作为参考,这里有一个示例,它在结构上使用了一个不同于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)
但是我需要使用的Web服务,对象以m小写字母开头。我怎么能吃掉他呢?我只是把我从低到高,工作得很好。谢谢lot@PedoSouza另一种方法是使用json注释,如
json:“mTheActualNameCouldBeAnything”
@evanmcdonnal:在Go中,它们被称为json(结构域)标记,而不是注释。@JimB:您对重复项的选择很差。它不包括标签的解释。@peterSO:同意。这个问题经常被问到,我现在很难找到好的