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

用 JSON 恐慌

用 JSON 恐慌

Go
千巷猫影 2021-06-03 09:10:04
我尝试运行以下代码package mainimport (    "encoding/json"    "fmt"    /*"labix.org/v2/mgo"    "labix.org/v2/mgo/bson"*/)func insertEntry(j *map[string]interface{}, entry string) {    err := json.Unmarshal([]byte(entry), j)    if err != nil {        panic(err)    }}func main() {    c1 := "{" +        `"mw" : 42.0922,` +        `"ΔfH°gas" : {` +        `   "value" : 372.38,` +        `   "units" : "kJ/mol"` +        `},` +        `"S°gas" : {` +        `   "value" : 216.81,` +        `   "units" : "J/mol×K"` +        `},` +        `"index" : [` +        `   {"name" : "mw", "value" : 42.0922},` +        `   {"name" : "ΔfH°gas", "value" : 372.38},` +        `   {"name" : "S°gas", "value" : 216.81}` +        `]` +        `}`    c2 := "{" +        `"name" : "silicon",` +        `"mw" : 32.1173,` +        `}` +        `"index" : [` +        `   {"name" : "mw", "value" : 32.1173}` +        `]` +        `}`    var m map[string]interface{}    insertEntry(&m, c1)    insertEntry(&m, c2)    chemical := m["ΔfH°gas"].(map[string]interface{})    fmt.Println("value: %s\n", chemical["value"].(string))    fmt.Println("units: %s\n", chemical["units"].(string))但我收到以下错误消息:    $ go run chemeo.go     panic: invalid character '}' looking for beginning of object key string    goroutine 1 [running]:    main.insertEntry(0xf840045100, 0x4badc4, 0x7f5e00000056, 0x20043115c)            /media/mictadlo/projects/mgo/chemeo/chemeo.go:19 +0xd8    main.main()            /media/mictadlo/projects/mgo/chemeo/chemeo.go:54 +0xa3    goroutine 2 [syscall]:    created by runtime.main            /usr/local/go/src/pkg/runtime/proc.c:221    exit status 2我做错了什么?
查看完整描述

1 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

您的c2变量持有无效的 JSON:


c2 := "{" +

`"name" : "silicon",` +

`"mw" : 32.1173,` +

`}` +

`"index" : [` +

` {"name" : "mw", "value" : 32.1173}` +

`]` +

`}`

清理干净,它看起来像这样:


c2 := `{

    "name" : "silicon",

    "mw" : 32.1173,

}

"index" : [

    {"name" : "mw", "value" : 32.1173}

]

}`

你可以看到}中间有一个额外的。


它应该是这样的:


c2 := `{

    "name": "silicon",

    "mw": 32.1173,

    "index": [

        {

            "name": "mw",

            "value": 32.1173

        }

    ]

}`


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

添加回答

举报

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