为了账号安全,请及时绑定邮箱和手机立即绑定

Go:读取 JSON 文件与读取 JSON 字符串

Go:读取 JSON 文件与读取 JSON 字符串

Go
守候你守候我 2022-07-11 17:02:34
我有一个名为的 JSON 文件example.json,如下所示:{    "name": "example",    "type": "record"}我还有一个将上述内容表示为“字符串”的变量:const example = `{    "name": "example",    "type": "record",}`我试图理解为什么将 JSON 文件的内容读入字节与读取变量的内容example不同。我的代码如下:    bytesJSON, err := ioutil.ReadFile("example.json")    if err != nil {        fmt.Println(err)    }    bytesVar, err := json.Marshal(example)    if err != nil {        fmt.Println(err)    }两者都是 type []uint8,但看起来非常不同。关于为什么的任何想法?以及如何确保它们始终相同?编辑:即使bytesVar := []byte(example)在同一问题中使用结果。编辑:bytesJSON好像:[123 10 32 32 32 32 34 110 97 109 101 34 58 32 34 101 120 97 109 112 108 101 34 44 10 32 32 32 32 34 116 121 112 101 34 58 32 34 114 101 99 111 114 100 34 10 125]bytesVar好像:[34 112 117 98 115 117 98 95 101 120 97 109 112 108 101 95 116 111 112 105 99 34]当打印到stdout.
查看完整描述

1 回答

?
开满天机

TA贡献1786条经验 获得超12个赞

注意:问题中的“编辑”输出使用的示例输入与问题中的不同。


如果我们将它们打印为字符串,它就会变得清晰。


fmt.Println(string(bytesJSON))


{

    "name": "example",

    "type": "record",

}

ioutil.ReadFile就是文件中的内容。


fmt.Println(string(bytesVar))


"{\n        \"name\": \"example\",\n        \"type\": \"record\",\n    }"

json.Marshal已将字符串编码example为 JSON。那是一个包含字符串的 JSON 字符串。


相当于ioutil.ReadFile("example.json")是简单的example。


如果我们解组bytesVar,我们会在example.


var unmarshal string;

json.Unmarshal(bytesVar,&unmarshal)

fmt.Println(unmarshal)


{

        "name": "example",

        "type": "record",

    }


查看完整回答
反对 回复 2022-07-11
  • 1 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信