
本文旨在帮助开发者解决 Go 语言中使用 encoding/json 包解析 JSON 数据时遇到的 panic: invalid character '}' looking for beginning of object key string 错误。通过分析错误原因,提供清晰的代码示例,并总结注意事项,帮助读者避免和解决类似问题,提升 JSON 数据处理能力。
panic: invalid character '}' looking for beginning of object key string 错误表明 JSON 字符串格式不正确,导致 json.Unmarshal 函数无法正确解析。通常,这意味着 JSON 字符串中存在语法错误,例如:
以下代码演示了如何避免此类错误:
package main
import (
"encoding/json"
"fmt"
)
func insertEntry(j *map[string]interface{}, entry string) error {
err := json.Unmarshal([]byte(entry), j)
if err != nil {
return err // 返回错误,而不是 panic
}
return nil
}
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{}
err := insertEntry(&m, c1)
if err != nil {
fmt.Println("Error parsing c1:", err)
return
}
err = insertEntry(&m, c2)
if err != nil {
fmt.Println("Error parsing c2:", err)
return
}
chemical, ok := m["ΔfH°gas"].(map[string]interface{})
if !ok {
fmt.Println("Error: ΔfH°gas not found or invalid type")
return
}
value, ok := chemical["value"].(float64) // 假设 value 是 float64 类型
if !ok {
fmt.Println("Error: value not found or invalid type")
return
}
units, ok := chemical["units"].(string)
if !ok {
fmt.Println("Error: units not found or invalid type")
return
}
fmt.Printf("value: %f\n", value)
fmt.Printf("units: %s\n", units)
}关键改进:
Easily find JSON paths within JSON objects using our intuitive Json Path Finder
30
type Chemical struct {
Name string `json:"name"`
Mw float64 `json:"mw"`
Index []struct {
Name string `json:"name"`
Value float64 `json:"value"`
} `json:"index"`
DeltaFHGas struct {
Value float64 `json:"value"`
Units string `json:"units"`
} `json:"ΔfH°gas"`
SGas struct {
Value float64 `json:"value"`
Units string `json:"units"`
} `json:"S°gas"`
}然后,使用 json.Unmarshal 将 JSON 数据解析到该结构体中。
处理 Go 中的 JSON 解析错误需要仔细检查 JSON 字符串的格式,并使用适当的错误处理机制。 通过遵循本文提供的最佳实践,您可以避免常见的 JSON 解析错误,并编写更健壮的 Go 代码。记住,验证、结构化和正确的错误处理是关键。
以上就是处理 Go 中 JSON 解析错误:深入解析与实践的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号