gpt4 book ai didi

json - 将 _id 解码为 id 不起作用

转载 作者:数据小太阳 更新时间:2023-10-29 03:24:22 25 4
gpt4 key购买 nike

所以我的结构是这样的:

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"

value 将正常返回(将返回来自 db 的实际 _id 值)

我想知道如何避免这种情况(但我仍然需要使用 json.Unmarshal)

最佳答案

  • 解码到您的 Article 结构中,但带有标记 json:"_id"
  • 两种仅标签不同的结构类型可以相互转换。因此,一种解决方案是创建另一种 ArticleBis 类型,使用标记 json:"id" 代替。然后将您的文章转换为 ArticleBis 实例,您将其编码。

另一个简单的例子:

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))
}

关于json - 将 _id 解码为 id 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46145184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com