json - 将结构转换为 []json.RawMessage
问题描述
试图将结构转换为 []json.RawMessage。我的理解是 json.Marshal() 将其转换为 byte[],就像 []json.RawMessage 一样。但是,我似乎无法在两者之间进行转换。我的函数期望接收输入为[]json.RawMessage
.
尝试了几种不同的方法,包括myIn := json.RawMessage(&myJsonStruct{"string1", "string2"})
和myIn := (*json.RawMessage)(json.Marshal(&myJsonStruct{"string1", "string2"}))
type myJsonStruct struct {
myString string `json:"myString"`
mySecongString string `json:"mySecondString"`
}
myIn := json.Marshal(&myJsonStruct{"string1", "string2"})
myFunction(myIn)
myFunction(receivedIn []json.RawMessage) {
//do work
return
}
解决方案
这里有几件事:
- 您需要创建一个新切片,
json.RawMessage
以便将该预期类型myFunction
作为参数传递给您的函数 - 将编组自定义结构的结果存储
myJsonStruct
在变量myIn
(类型[]byte
)中 - 创建一个
myInRaw
(typejson.RawMessage
) 的新变量并将其附加到先前创建的json.RawMessage
.
然后,上述步骤将允许您将切片传递json.RawMessage
给您的函数以完成进一步的工作。
请参阅下面的示例或操场上的工作示例:
package main
import (
"encoding/json"
)
type myJsonStruct struct {
myString string `json:"myString"`
mySecongString string `json:"mySecondString"`
}
func myFunction(receivedIn []json.RawMessage) {
//do work
return
}
func main() {
var rawJSONSlice []json.RawMessage
myIn, err := json.Marshal(
&myJsonStruct{
myString: "string1",
mySecongString: "string2",
},
)
if err != nil {
// catch err
}
myInRaw := json.RawMessage(myIn)
rawJSONSlice = append(rawJSONSlice, myInRaw)
myFunction(rawJSONSlice)
}
推荐阅读
- rest - 使用 REST API 时出现 HTTP 状态 505 错误
- python - sklearn multinomialnb中的似然概率如何计算?
- php - 设置没有溢出的日子(使用 PHP Carbon)
- javascript - 如何显示数据库中的随机图像?
- google-calendar-api - 我的应用程序无法访问 g 套件用户 Google 日历
- python - 这个小代码片段中的“UnboundLocalError”让我感到困惑
- reactjs - react redux redux-saga 的集成测试
- scala - 如何在 Scala 中使用 Spark 处理重新分配/分配算法
- c# - Ienumerable.cast 到 ValueTuple InvalidCastException
- python - 匹配字符串结尾