在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排序和拼接的方法了,希望對您有所幫助。