我有以下結構的一部分。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
- 1 回答
- 0 關注
- 135 瀏覽
添加回答
舉報
0/150
提交
取消