在 Go 中解析多个 JSON 对象
当遇到多个 JSON 对象时,例如从服务器返回的格式为:
{"something":"foo"} {"something-else":"bar"}
解析可能具有挑战性。下面的代码片段演示了使用 strings.Replace 时遇到的困难:
correct_format := strings.Replace(string(resp_body), "}{", "},{", -1) json_output := "[" + correct_format + "]"
另一种解决方案是利用 json.Decoder 进行有效解码:
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 { // all done break } if err != nil { log.Fatal(err) } fmt.Printf("%+v\n", doc) } }
这种方法可以确保成功解析多个 JSON 对象,即使在 Common Crawl 数据等场景中也是如此。
以上是如何在Go中高效解析多个连续的JSON对象?的详细内容。更多信息请关注PHP中文网其他相关文章!