gpt4 book ai didi

go - 当我的值为结构类型时如何填充 map[string] interface{}?

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

我想构建一个与下面的 PurchaseOrder 结构等效的 JSON:

type PurchaseOrder struct {
State string
FsmName string
Supplier string
Receiver string
TradeItems map[string]PRTradeItem
}

type PRTradeItem struct {
Quantity float64 `json:"quantity"`
Supplier string `json:"supplier"`
Receiver string `json:"receiver"`

PricePerUnit float64 `json:"pricePerUnit"`
}

为此,我做了以下工作:

po := make(map[string]interface{})
po["Sender"] = "org2"
po["Receiver"] = "org1"
po["TradeItems"] = make(map[string]PRTradeItem)
po["TradeItems"]["sku1"] = PRTradeItem{Quantity: 100, Supplier: "org2", Receiver: "org1", PricePerUnit: 10.5}
poAsBytes, _ := JSON.Marshal(po)

我得到的错误是:

invalid operation: po["TradeItems"]["sku1"] (type interface {} does not support indexing).

环顾四周后,我在代码中添加了以下几行并且它起作用了。

internalMap, ok := po["TradeItems"].(map[string]PRTradeItem)
if !ok{

panic("why???")
}
if ok{
internalMap["sku1"] = PRTradeItem{Quantity:100,Supplier:"org2", Receiver:"org1", PricePerUnit:10.5}
}

我不太明白这一行是什么意思

internalMap, ok := po["TradeItems"].(map[string]PRTradeItem)

有人可以解释一下吗?

最佳答案

I am wanting to build a JSON equivalent of the PurchaseOrder struct below:

type PurchaseOrder struct {
State string
FsmName string
Supplier string
Receiver string
TradeItems map[string]PRTradeItem
}

最简单的方法是:

po := PurchaseOrder{
State: "paid",
Supplier: "Acme, Inc.",
TradeItems: map[string]PRTradeItem{
"sku1": PRTradeItem{Quantity: 100, Supplier: "org2", ... },
},
}
poAsBytes, err := json.Marshal(po)

忘记你的 po := make(map[string]interface{}) 和 map 的手动操作。

如果您需要控制 PurchaseOrder 对象中的 JSON 键,请添加适当的 json 标记,就像您对 PRTradeItem 定义所做的那样.

关于go - 当我的值为结构类型时如何填充 map[string] interface{}?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55491830/

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