go中实现将多个json合并成到同一个JSON中

工作中遇到的问题,如何将两个json格式的数据合并成同一个,浅记一下,原理就是

  1. 先将两个JSON格式的字符串分别序列化成[]byte
  2. 然后返序列化到map[string]interface{},实现起映射关系
  3. 最后序列化该map,将序列化的值转换成string类型
package main

import (
    "encoding/json"
    "fmt"
)

type S struct {
    A uint32 `json:"a"`
    B string `json:"b"`
    C uint32 `json:"c"`
}

type S1 struct {
    B string `json:"b"`
    C uint32 `json:"c"`
    D uint32 `json:"d"`
}

func main() {
    //json格式的数据1
    s := S{
        A: 12,
        C: 2,
    }
    
    //json格式的数据2
    s1 := S1{
        B: "123",
        C: 99999,
        D: 10,
    }
    //接下来的目标:合并两个JSON字符串
    js, _ := json.Marshal(s)
    js1, _ := json.Marshal(s1)
    

    var m map[string]interface{}
    json.Unmarshal(js, &m)

    json.Unmarshal(js1, &m)

    fmt.Println(m)

    res, _ := json.Marshal(m)

    fmt.Println(string(res)) // {"a":12,"b":"123","c":99999,"d":10}
}

你可能感兴趣的:(jsongo)