Go语言json文件返序列化到map里

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() {
// 读取json文件
data, err := ioutil.ReadFile("data.json")
if err != nil {
fmt.Println("读取文件失败:", err)
return
}
// 定义map变量
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() {
// 假设filename是一个字符串切片,存储了json文件的路径
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()
// 定义map变量
dataMap1 := make(map[string]string)
// 创建json解码器
decoder := json.NewDecoder(file)
// 反序列化
err8 := decoder.Decode(&dataMap1)
if err8 != nil {
fmt.Println("反序列化失败:")
fmt.Println(err8)
return
}
}
}

Go语言json文件返序列化到map里

https://blog.jiejaitt.top/posts/13fd086.html

作者

JIeJaitt

发布于

2023-06-24

更新于

2023-07-03

许可协议

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×