【发布时间】:2022-01-07 13:26:23
【问题描述】:
我有一个请求主体,它是一个 json 对象数组,例如,
{
"data": [
{
"id": "1234",
"someNestedObject": {
"someBool": true,
"randomNumber": 488
},
"timestamp": "2021-12-13T02:43:44.155Z"
},
{
"id": "4321",
"someNestedObject": {
"someBool": false,
"randomNumber": 484
},
"timestamp": "2018-11-13T02:43:44.155Z"
}
]
}
我想获取数组中对象的计数并将它们拆分为单独的 json 输出以传递给下一个服务。我通过解组原始 json 请求正文然后循环遍历重新编组每个元素并将其附加到正在发送的任何传出消息来执行此操作。类似的,
requestBodyBytes := []bytes(JSON_INPUT_STRING)
type body struct {
Foo []json.RawMessage `json:"foo"`
}
var inputs body
_ = json.Unmarshal(requestBodyBytes, &inputs)
for input := range inputs {
re, _ := json.Marshal(m)
... do something with re
}
我看到的是前后的字节数组是不同的,即使字符串表示是相同的。我想知道是否有一种方法可以做到这一点而不改变编码或这里发生的任何事情来改变字节以防止任何不需要的突变?数组中的实际 json 对象都将具有不同的形状,因此我无法使用带有字段验证的结构化 json 定义来提供帮助。
另外,上面的代码只是一个例子,所以如果有拼写或语法错误,请忽略它们,因为实际代码按描述工作。
【问题讨论】:
标签: json go httprequest marshalling unmarshalling