json - 解组具有多个 json 对象的 json 文件(无效的 json 文件)
问题描述
我有一个包含以下内容的 json 文件(file.json):
文件.json:
{"job": "developer"}
{"job": "taxi driver"}
{"job": "police"}
文件内容如上(不是有效的json文件)
我想在我的代码中使用数据,但我不能解组这个
解决方案
您拥有的不是单个 JSON 对象,而是一系列(不相关的)JSON 对象。您不能json.Unmarshal()
用来解组包含多个(独立)JSON 值的内容。
用于json.Decoder
从源中一对一解码多个 JSON 值(对象)。
例如:
func main() {
f := strings.NewReader(file)
dec := json.NewDecoder(f)
for {
var job struct {
Job string `json:"job"`
}
if err := dec.Decode(&job); err != nil {
if err == io.EOF {
break
}
panic(err)
}
fmt.Printf("Decoded: %+v\n", job)
}
}
const file = `{"job": "developer"}
{"job": "taxi driver"}
{"job": "police"}`
哪些输出(在Go Playground上尝试):
Decoded: {Job:developer}
Decoded: {Job:taxi driver}
Decoded: {Job:police}
即使您的 JSON 对象在源文件中占用多行,或者同一行中有多个 JSON 对象,此解决方案也有效。
推荐阅读
- java - 使用 kubernetes-client 并发安全地更新标签
- python - 谁能告诉我为什么 Tkinter 不能在 VS Code 上运行?
- javascript - How to retrieve subarray elements in JSON with Javascript with out JSON Heder?
- node.js - 为什么“npm install git repo url”会重写package-lock.json?
- php - 如何在 WooCommerce 订单页面上添加新列
- javascript - /node_modules/http-proxy/lib/http-proxy/index.js:120; 错误:套接字挂起
- sql - 解析 MS Access 中的 CSV (JSON) 数据字段
- javascript - Node.js 网络爬虫
- r - 是否可以将 UTF-8 代码转换为 R 中的正确字符?
- powershell - PS调用命令和网络使用