为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 切片到名称值对的 json 数组

Golang 切片到名称值对的 json 数组

Go
泛舟湖上清波郎朗 2022-08-24 16:17:59
我有以下结构的一部分。type ParamStruct struct {    Paramname  string    Paramvalue interface{}}该值可以是字符串的整型浮点数。我需要将如下所示的切片转换为如下所示的 JSON 数组。[{name1 95} {name2 someStrValue} {name3 someOtherStrValue}][{ "name1": 1 },{ "name2": "someStrValue"},{ "name3": "someOtherStrValue"}]我尝试使用默认函数进行封送处理,并得到如下所示的JSON输出。[{"Paramname":"name1","Paramvalue":95},{"Paramname":"name2","Paramvalue":"someStrValue"},{"Paramname":"name3","Paramvalue":"someOtherStrValue"}]输出 JSON 必须是名称-值对,如上所示。关于如何以所需格式获取 JSON 输出的任何建议?下面是完整的代码示例package mainimport (    "encoding/json"    "fmt")type ParamStruct struct {    Paramname  string    Paramvalue interface{}}func main() {    paramlist1 := make([]ParamStruct, 3)    paramlist1[0].Paramname = "name1"    paramlist1[0].Paramvalue = 95    paramlist1[1].Paramname = "name2"    paramlist1[1].Paramvalue = "someStrValue"    paramlist1[2].Paramname = "name3"    paramlist1[2].Paramvalue = "someOtherStrValue"    fmt.Println(paramlist1)    js, err := json.Marshal(paramlist1)    if err != nil {        fmt.Printf("Error: %s", err.Error())    } else {        fmt.Println(string(js))    }}
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

你可以实现 json。封送拆器接口。

例如:

type ParamStruct struct {
    Paramname  string
    Paramvalue interface{}
}
func (ps ParamStruct) MarshalJSON() ([]byte, error) {
    return json.Marshal(map[string]interface{}{ps.Paramname: ps.Paramvalue})
}

https://play.golang.org/p/sUsR-FMZQmq



查看完整回答
反对 回复 2022-08-24
  • 1 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号