1
は、だから私は今、私はこのコードで空の配列をエンコードするjsonがnullを返すのはなぜですか?
func getTaggedTextForPage(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
pageNumber, err := strconv.ParseInt(vars["pageNumber"], 10, 64)
check(err)
defer r.Body.Close()
rows, err := db.Query("SELECT * from tagged_text WHERE page_number = ?", pageNumber)
check(err)
var textTagRelationships []TextTagRelationship
var textTagRelationship TextTagRelationship
for rows.Next() {
//execute sql code here
textTagRelationships = append(textTagRelationships, textTagRelationship)
}
if err := json.NewEncoder(w).Encode(textTagRelationships); err != nil {
check(err)
}
}
のような何かをするハンドラをこの
type TextTagRelationship struct {
Id int64 `json:"id"`
TagId int64 `json:"tag_id"`
TaggedText string `json:"tagged_text"`
TagName string `json:"tag_name"`
PageNumber int64 `json:"page_number"`
Color string `json:"color"`
}
type TextTagRelationships []TextTagRelationship
のような種類がありますしているこれは、実際の行がある場合は正常に動作しますが、空の配列をコードしているときtextTagRelationships
、クロームコンソールの私の応答で私はnull
を得る。なぜこうなった? textTagRelationships
は実際には[]
なので、[]
をエンコードするエンコードと、[]
のレスポンスが必要です。
「textTagRelationships」のようなサウンドは 'nil'です。 – user2357112
まあ、何も起こりません。それはちょうど誘惑された。そして私がそれをプリントアウトすると、私は空の配列をプリントアウトします。 – praks5432
それは宣誓されていますが、initedされていません。 'var thing [] type'は' [] type'型の 'nil'を返します。 'thing:= make([] type、len)'は '[] type'と長さ' len'のスライスを与え、 'var thing [len] type'は長さが' type 'は 'type'のゼロ値で埋められます。 – Adrian