arrays - 在go中创建异构json数组

标签 arrays json go struct marshalling

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

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}]

最佳答案

您可以向您的结构添加编码方法来处理逻辑。

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

Try it on the Playground

关于arrays - 在go中创建异构json数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53374464/

相关文章:

javascript - 检查对象是否有 key ,如果有,添加新 key : value to said object

javascript - 如何从 json 嵌套对象获取值

javascript - 如何将函数应用于对象

javascript - JSON在不同div中显示键和值

php - 如何在单个数组中显示更多数量的数组结果?

function - 如何在不调用函数的情况下判断类型的基函数是否已在 Go 中被覆盖?

postgresql - Golang postgres 提交未知命令错误?

serialization - `fmt` 包的函数是否支持数组的格式化程序?

c - 将常量添加到数组

java - 进行排序时还会检查输入的名称是否是单词(即,它包含字母而不是数字或标点符号等字符)