<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      golang json字符串合并操作

      用于兩個json格式的字符串合并,當B向A合并時,共有的字段,將用B字段的值(伴隨類型一起覆蓋),非共有的,A的字段保留,B的字段新增。

      example代碼:

      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() {
      	s := S{
      		A: 12,
      		C: 2,
      	}
      	s1 := S1{
      		B: "123",
      		C: 99999,
      		D: 10,
      	}
      	js, _ := json.Marshal(s)
      	js1, _ := json.Marshal(s1)
      
      	var m map[string]interface{}
      	json.Unmarshal(js, &m)
      	json.Unmarshal(js1, &m)
      
      	res, _ := json.Marshal(m)
      
      	fmt.Println(string(res)) // {"a":12,"b":"123","c":99999,"d":10}
      }
      

        ref:https://stackoverrun.com/cn/q/11154146

       

      這樣的方法無法遞歸合并,新方法可遞歸:

      package main
      
      import (
      	"encoding/json"
      	"fmt"
      	"reflect"
      )
      
      var jsonMergeDepth = 32
      
      func main() {
      	buf1 := []byte(`{"a":1,"b":2}`)
      	buf2 := []byte(`{"c":3,"d":4,"a":"aaa"}`)
      
      	var m1, m2 map[string]interface{}
      
      	json.Unmarshal(buf1, &m1)
      	json.Unmarshal(buf2, &m2)
      
      	merged := JsonMerge(m1, m2)
      
      	fmt.Println(merged)
      }
      
      func JsonMerge(dst, src map[string]interface{}) map[string]interface{} {
      	return jsMerge(dst, src, 0)
      }
      
      func jsMerge(dst, src map[string]interface{}, depth int) map[string]interface{} {
      	if dst == nil {
      		dst = make(map[string]interface{})
      	}
      	if depth > jsonMergeDepth {
      		return dst
      		// panic("too deep!")
      	}
      
      	for key, srcVal := range src {
      
      		if dstVal, ok := dst[key]; ok {
      
      			srcMap, srcMapOk := jsMapify(srcVal)
      			dstMap, dstMapOk := jsMapify(dstVal)
      
      			if srcMapOk && dstMapOk {
      				srcVal = jsMerge(dstMap, srcMap, depth+1)
      			}
      		}
      
      		dst[key] = srcVal
      	}
      
      	return dst
      }
      
      func jsMapify(i interface{}) (map[string]interface{}, bool) {
      
      	value := reflect.ValueOf(i)
      
      	if value.Kind() == reflect.Map {
      
      		m := map[string]interface{}{}
      
      		for _, k := range value.MapKeys() {
      			m[k.String()] = value.MapIndex(k).Interface()
      		}
      
      		return m, true
      	}
      
      	return map[string]interface{}{}, false
      }
      

        

        

        ref:https://golangnote.com/topic/209.html

      posted @ 2020-04-02 15:57  bobojiang2016  閱讀(3220)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 青青草无码免费一二三区| 国偷自产一区二区免费视频 | 国产仑乱无码内谢| 东京热人妻无码一区二区AV| 柠檬福利第一导航在线| 亚洲av综合色区在线观看| 精品久久人人做爽综合| 我要看特黄特黄的亚洲黄片| 老司机午夜精品视频资源| 亚洲色成人网站www永久四虎| 久久精品夜色噜噜亚洲aa| 久久精品国产只有精品96| 2020精品自拍视频曝光| 国精产品一区一区三区有限公司杨| 麻豆一区二区三区精品蜜桃| 蜜桃无码一区二区三区 | 日本成本人片免费网站| 亚洲欧洲一区二区综合精品| 黑森林福利视频导航| 40岁大乳的熟妇在线观看| 国内视频偷拍久久伊人网| 久久久久无码精品国产h动漫| 狠狠色狠狠色综合日日不卡| 97人人模人人爽人人喊网| 亚洲中文字幕一二三四区| 国产偷窥熟女高潮精品视频| 日本精品一区二区不卡| 亚洲国产精品美日韩久久| AV无码免费不卡在线观看| 亚洲av无码牛牛影视在线二区| 欧洲熟妇色xxxx欧美老妇免费| 无码免费大香伊蕉在人线国产| 99久久精品久久久久久婷婷 | 在线观看美女网站大全免费| 人妻少妇邻居少妇好多水在线 | 兰坪| 肉大榛一进一出免费视频| 激情综合五月网| 福利一区二区1000| 成人无号精品一区二区三区| 大陆一级毛片免费播放|