Golang的 Json string和Map互相轉換

在存儲的時候想把數據列表存儲成json string,但是在代碼使用的時候又覺得用map更快更方便。這個時候就需要相互轉換,下面是一個轉換的例子。

// Test for json and map converting
package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	jsonStr := `{"ip": "127.0.0.1", "device": "ABESSF0023"}`

	// test json string to map
	m, err := JsonToMap(jsonStr)
	if err != nil {
		fmt.Printf("Convert json to map failed with error: %+v\n", err)
	}

	fmt.Printf("Converted to map result: %+v\n", m)

	// test map to json string
	jsonRes, err := MapToJson(m)
	if err != nil {
		fmt.Printf("Convert json to map failed with error: %+v\n", err)
	}

	fmt.Printf("Convert to json string result: %+v\n", jsonRes)

}

// Convert json string to map
func JsonToMap(jsonStr string) (map[string]string, error) {
	m := make(map[string]string)
	err := json.Unmarshal([]byte(jsonStr), &m)
	if err != nil {
		fmt.Printf("Unmarshal with error: %+v\n", err)
		return nil, err
	}

	for k, v := range m {
		fmt.Printf("%v: %v\n", k, v)
	}

	return m, nil
}

// Convert map json string
func MapToJson(m map[string]string) (string, error) {
	jsonByte, err := json.Marshal(m)
	if err != nil {
		fmt.Printf("Marshal with error: %+v\n", err)
		return "", nil
	}

	return string(jsonByte), nil
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章