首页 > 解决方案 > 在 go 中创建异构 json 数组

问题描述

假设我有一个这样的结构:

type Message struct {
    Args   []interface{}
    Kwargs map[string]interface{}
}

message := Message{                                                                                                                                                                                            
    []interface{}{1, 2, 3, 4},                                                                                                                                                                                 
    map[string]interface{}{"a": 2, "b": 3},                                                                                                                                                                    
}

我应该如何编组消息以拥有这样的 JSON?

[[1,2,3,4], {"a": 2, "b":3}]

标签: arraysjsongostructmarshalling

解决方案


您可以在结构中添加一个 marshal 方法来处理逻辑。有点像

func (m Message) MarshalJSON() ([]byte, error) {
    data := make([]interface{}, 0)
    data = append(data, m.Args)
    data = append(data, m.Kwargs)
    return json.Marshal(data)
}

在操场上试试


推荐阅读