Go语言我想json文件返序列化到map里
如何使用Go语言将json文件反序列化到map里。
- 首先,你需要导入
encoding/json
包,这个包提供了json的序列化和反序列化的功能。 - 然后,你需要定义一个map变量,用来存储反序列化后的数据。map的键类型必须是字符串、整数或者实现了
encoding.TextUnmarshaler
接口的类型,map的值类型可以是任意类型。 - 接着,你需要调用
json.Unmarshal
函数,将json文件的字节切片和map变量的指针作为参数传入。这个函数会解析json文件,并将数据存储到map变量中。 - 最后,你可以打印或者操作map变量,查看反序列化后的结果。
例如,假设你有一个json文件,内容如下:
1 2 3 4 5
| { "name": "Alice", "age": 25, "hobbies": ["reading", "coding", "traveling"] }
|
你可以用以下代码将它反序列化到map里:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| package main
import ( "encoding/json" "fmt" "io/ioutil" )
func main() { data, err := ioutil.ReadFile("data.json") if err != nil { fmt.Println("读取文件失败:", err) return } var m map[string]interface{} err = json.Unmarshal(data, &m) if err != nil { fmt.Println("反序列化失败:", err) return } fmt.Println("反序列化后:", m) }
|
输出结果为:
1
| 反序列化后: map[age:25 hobbies:[reading coding traveling] name:Alice]
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| package main
import ( "encoding/json" "fmt" "os" )
func main() { for i := range filename { file, err := os.OpenFile(filename[i], os.O_CREATE|os.O_RDWR, 0666) if err != nil { fmt.Println("打开文件失败:", err) return } defer file.Close() dataMap1 := make(map[string]string) decoder := json.NewDecoder(file) err8 := decoder.Decode(&dataMap1) if err8 != nil { fmt.Println("反序列化失败:") fmt.Println(err8) return } } }
|