2 回答

TA貢獻1868條經驗 獲得超4個贊
您可以將SourceDTO結構嵌入到另一個結構中,如下所示:
type SourceDTO struct { // top level object
Success bool `json:"success"`
}
type FeedResponse struct {
FeedData YourCustomFeedStruct `json:"feed"`
// Embedded Struct
SourceDTO
}
Success現(xiàn)在您可以從 FeedResponse 結構訪問bool。SourceDTO此外,可以從 FeedResponse 訪問該結構上定義的任何方法。

TA貢獻1887條經驗 獲得超5個贊
為了在 json 解組中有一些抽象,它可以用于interface{}許多用例。
package main
import (
"encoding/json"
"fmt"
)
type UniversalDTO struct {
Success bool `json:"success"`
Data interface{} `json:"data"`
}
type ConcreteData struct {
Source string `json:"source"`
Site string `json:"site"`
}
func main() {
jsondata := []byte(`{"sucess":"true","data":[{"source":"foo","site":"bar"}]}`)
data := make([]ConcreteData, 0, 10)
dtoToSend := UniversalDTO{Data: &data}
describe(dtoToSend)
describe(dtoToSend.Data)
json.Unmarshal(jsondata, &dtoToSend)
describe(dtoToSend)
describe(dtoToSend.Data)
}
func describe(i interface{}) {
fmt.Printf("(%v, %T)\n", i, i)
}
在這里測試: https: //play.golang.org/p/SSSp_zptMVN
json.Unmarshal需要一個將 json 放入其中的對象。因此,首先我們總是需要一個對象。根據目標對象的具體實例,可以使用具體的結構對象(當然必須單獨創(chuàng)建)覆蓋interface{} 。這里一個重要的學習是,go接口也可以用 slice 覆蓋。通過這種方式,也可以將數組解組為 go 對象。但是,結構體的切片必須定義為指向該類型的指針的切片。
- 2 回答
- 0 關注
- 145 瀏覽
添加回答
舉報