色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

golang json排序拼接

傅智翔1年前8瀏覽0評論

在golang中,json是一種非常重要的數據格式。在我們的程序中,經常需要對json數據進行排序和拼接,以滿足不同的需求。下面我們來介紹一下golang中json排序和拼接的方法。

json排序

func Sort(data []byte) ([]byte, error) {
var i interface{}
err := json.Unmarshal(data, &i)
if err != nil {
return nil, err
}
sortedMap := sortMap(i)
return json.Marshal(sortedMap)
}
func sortMap(i interface{}) interface{} {
switch ii := i.(type) {
case map[string]interface{}:
sm := make(map[string]interface{})
var keys []string
for k := range ii {
keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
sm[k] = sortMap(ii[k])
}
return sm
case []interface{}:
for i, s := range ii {
ii[i] = sortMap(s)
}
}
return i
}

json拼接

type Foo struct {
ID   uint   `json:"id"`
Name string `json:"name"`
}
type Bar struct {
ID     uint   `json:"id"`
Age    uint   `json:"age"`
Salary uint64 `json:"salary"`
}
func (f Foo) MarshalJSON() ([]byte, error) {
return json.Marshal(map[string]interface{}{
"id":   f.ID,
"name": f.Name,
})
}
func (b Bar) MarshalJSON() ([]byte, error) {
return json.Marshal(map[string]interface{}{
"id":     b.ID,
"age":    b.Age,
"salary": b.Salary,
})
}
func main() {
foo := Foo{
ID:   1,
Name: "John",
}
bar := Bar{
ID:     2,
Age:    30,
Salary: 50000,
}
result, err := json.Marshal(struct {
Foo `json:"foo"`
Bar `json:"bar"`
}{foo, bar})
if err != nil {
log.Fatalln(err)
}
fmt.Println(string(result))
}

以上就是golang中json排序和拼接的方法了,希望對您有所幫助。