所以我的结构看起来像这样:
type Article struct {
ID bson.ObjectId `json:"id" bson:"_id,omitempty"`
LangCode string `json:"langCode" bson:"langCode"`
AuthorId string `json:"authorId" bson:"authorId"`
AuthorName string `json:"authorName" bson:"authorName"`
ArticleType int64 `json:"type" bson:"type"`
Title string `json:"title" bson:"title"`
Intro string `json:"intro" bson:"intro"`
Body string `json:"body" bson:"body"`
MainPic string `json:"mainPic" bson:"mainPic"`
Tags string `json:"tags" bson:"tags"`
Slug string `json:"slug" bson:"slug"`
DateAdded time.Time `json:"dateAdded" bson:"dateAdded"`
Status int64 `json:"status" bson:"status"`
}
以下代码段:
pageReturn.Pagination = resultsList.Pagination
err = json.Unmarshal(resultsList.Results, &pageReturn.Articles)
将从数据库中返回没有值_id的数据(我的意思是在json字符串中id将等于“”)
如果我更改ID bson.ObjectId json:"id" bson:"_id,omitempty"
到ID bson.ObjectId json:"_id" bson:"_id,omitempty"
值将正常返回(将返回db的实际_id值)
我想知道如何避免这种情况(但我仍然需要使用json.Unmarshal)
答案 0 :(得分:0)
json:"_id"
json:"id"
。然后将文章转换为Article Mars实例,即Marshal。另一个简单的例子:
package main
import "fmt"
import "encoding/json"
type Base struct {
Firstname string `json:"first"`
}
type A struct {
Base
Lastname string `json:"last"`
}
type B struct {
Base
Lastname string `json:"lastname"`
}
func main() {
john := A{Base: Base{Firstname: "John"}, Lastname:"Doe"}
john1 := B(john)
john_json, _ := json.Marshal(john)
john1_json, _ := json.Marshal(john1)
fmt.Println(string(john_json))
fmt.Println(string(john1_json))
}