gpt4 book ai didi

json - 解码到相同的结构但不同的 json 名称

转载 作者:行者123 更新时间:2023-12-01 22:38:56 25 4
gpt4 key购买 nike

我正在尝试解码特定的 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)
}

关于json - 解码到相同的结构但不同的 json 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58337535/

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