gpt4 book ai didi

json - 编码到 JSON 结构扩展了另一个具有相同字段标签的结构

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

  • 我有 2 个 struct,其中包含一个具有相同标签 (id) 和相同 JSON 注释 (`json:"id"`) 的字段。
  • 一个 struct (Bar) 包含来自另一个 struct (Foo) 的字段标签及其值.

我想用 id 字段对包装器 struct Bar 进行 JSON 编码,但内部字段具有不同的 JSON 注释(例如`json:"foo_id"`)。我找不到办法,但看起来应该可行?

快速浏览一下 https://golang.org/pkg/encoding/json/ 我找不到解决方案。

有可能吗?有什么解决办法吗?我试图避免 get/set 的所有样板在结构之间复制/粘贴值,我希望这是可行的。

package main

import (
"encoding/json"
"fmt"
)

type Foo struct {
ID int `json:"id"`
Stuff string `json:"stuff"`
}

type Bar struct {
ID int `json:"id"`
Foo
// the following does not work,
// I've tried a few variations with no luck so far
// Foo.ID int `json:"foo_id"`
OtherStuff string `json:"other_stuff"`
}

func main() {
foo := Foo{ID: 123, Stuff: "abc" }
bar := Bar{ID: 456, OtherStuff: "xyz", Foo: foo }

fooJsonStr, _ := json.Marshal(foo)
barJsonStr, _ := json.Marshal(bar)

fmt.Printf("Foo: %s\n", fooJsonStr)
fmt.Printf("Bar: %s\n", barJsonStr)
}

给出这个输出:

Foo: {"id":123,"stuff":"abc"} 
Bar: {"id":456,"stuff":"abc","other_stuff":"xyz"}

最佳答案

One struct (Bar) inherit from the other struct (Foo).

显然不是,因为 Go 中没有继承。

如果你想把 Foo 的 ID 命名为 foo_id:

type Foo struct {
ID int `json:"foo_id"`
Stuff string `json:"stuff"`
}

非常简单。

关于json - 编码到 JSON 结构扩展了另一个具有相同字段标签的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50468174/

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