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

我有以下结构的一部分。


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 main


import (

    "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))

    }

}


泛舟湖上清波郎朗
浏览 161回答 1
1回答

holdtom

你可以实现 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go