
在 Go 中解析多个未包装的 JSON 对象
在 Go 中,encoding/json 包可以有效解析方括号 ([] 内的 JSON 对象) )。然而,遇到多个未包装的 JSON 对象(例如,{key:value}{key:value})会带来解析挑战。
要解码此类多个未包装的 JSON 对象,我们可以使用 json.Decoder 来迭代读取并解码每个单独的对象。这是一个示例:
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 33 | package main
import (
"encoding/json"
"fmt"
"io"
"log"
"strings"
)
var input = `{foo: bar}{foo: baz}`
type Doc struct {
Foo string
}
func main() {
dec := json.NewDecoder(strings.NewReader(input))
for {
var doc Doc
err := dec.Decode(&doc)
if err == io.EOF {
break
}
if err != nil {
log.Fatal(err)
}
fmt.Printf( "%+v\n" , doc)
}
}
|
登录后复制
在此示例中:
- 我们从输入字符串创建一个 json.Decoder。
- 使用循环,我们反复尝试使用 dec.Decode() 从输入中解码单个对象。
- 如果解码遇到文件结束 (io.EOF),我们退出循环,因为没有更多对象要解码。
- 对于每个成功解码的对象,我们将其编组到 Doc 结构中并打印它。
游乐场:https://play.golang.org/p/ANx8MoMC0yq
以上是如何在 Go 中解析多个未包装的 JSON 对象?的详细内容。更多信息请关注PHP中文网其他相关文章!