json - 解组到相同的结构但不同的 json 名称
问题描述
我正在尝试解组特定的 json 数据,执行一些数据转换,然后编组数据并发送它。但是我想用不同的 json 变量名来编组它。
我可以将数据编组为另一个 json 名称,例如使用 xyz 而不是 abc
{"abc":1}
至
{"xyz":1}
package main
import (
"fmt"
"encoding/json"
)
type SomeStruct struct {
SomeField int `json:"abc"`
}
func main(){
jsonData := []byte(`{"abc":1}`)
strct := SomeStruct{}
json.Unmarshal([]byte(jsonData), &strct)
fmt.Println(strct)
x, err := json.Marshal(strct)
if err != nil {
fmt.Println("errs", err)
}
finalValue := string(x)
fmt.Println(finalValue)
}
解决方案
定义两种结构,一种用于输入,一种用于输出,然后进行如下转换:
package main
import (
"fmt"
"encoding/json"
)
type inStruct struct {
SomeField int `json:"abc"`
}
type outStruct struct {
SomeField int `json:"xyz"`
}
func main(){
jsonData := []byte(`{"abc":1}`)
strct := inStruct{}
if err := json.Unmarshal(jsonData, &strct); err != nil {
log.Fatal(err)
}
// Edit to reflect mkopriva's comment
// outStruct := &outStruct{SomeField: strct.SomeField}
outStruct := outStruct(strct)
x, err := json.Marshal(outStruct)
if err != nil {
log.Fatal(err)
}
finalValue := string(x)
fmt.Println(finalValue)
}
推荐阅读
- reactjs - 调用 Search 函数后如何保留新组件?
- unit-testing - 如何测试回调函数?VUE/JEST
- onem2m - `child-resources` 的模式在哪里指定?
- java - 为 Minecraft Modding 设置工作场所时出错
- machine-learning - 您可以使用文本相似性搜索相关的数据库表/字段吗?
- django - Django:在下拉列表中排序项目(通过 field_order?)
- php - php如何从两个不同的关联数组中检索数据
- javascript - 在 React 中导入图像
- python - 为什么 BeautifulSoup 给我错误的文字?
- python - 对字典内的列表和列表的操作