在 Go 中解析多个 JSON 对象:寻址嵌套对象
处理从服务器以嵌套对象形式返回的多个 JSON 对象时,标准encoding/json包可能会遇到困难。本文深入研究了使用 json.Decoder 有效处理此类场景的解决方案。
考虑以下示例:
{"something":"foo"} {"something-else":"bar"}
使用以下代码解析此数据:
correct_format := strings.Replace(string(resp_body), "}{", "},{", -1) json_output := "[" + correct_format + "]"
导致错误。
解决方案使用json.Decoder
为了解决这个问题,我们使用 json.Decoder。 json.Decoder 读取并解码类似 JSON 数据流,从输入中顺序解码各个 JSON 对象。
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) } }
在此解决方案中:
Playground 和结论
您可以在 Go Playground 上尝试此解决方案: https://play.golang.org/p/ANx8MoMC0yq
通过使用 json.Decoder,我们能够解析多个 JSON 对象,即使它们嵌套在更大的 JSON 结构中也是如此。
以上是如何在 Go 中解析多个 JSON 对象,尤其是当它们嵌套时?的详细内容。更多信息请关注PHP中文网其他相关文章!