在存储的时候想把数据列表存储成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
}

参考文章:LiveToolkit

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐