首页 > 后端开发 > Golang > 如何在Go中解析不带括号的多个JSON对象?

如何在Go中解析不带括号的多个JSON对象?

DDD
发布: 2025-01-01 13:25:10
原创
297 人浏览过

How to Parse Multiple JSON Objects in Go Without Brackets?

Go 中解析多个 JSON 对象

处理 JSON 数据时,经常会遇到从服务器返回多个 JSON 对象的情况,而不是括在括号中的单个对象。解析此类数据存在其独特的挑战。

例如,如果您有以下格式的响应:

{"something":"foo"}
{"something-else":"bar"}
登录后复制

您不能直接使用encoding/json包来解析此数据,因为它需要括号括住对象。

要解决此问题,您可以利用encoding/json 包中的 json.Decoder 类型。此类型允许您从字节流中解码 JSON 数据,使其适合处理多个 JSON 对象。

以下示例说明如何使用 json.Decoder 解析多个 JSON 对象:

package main

import (
    "encoding/json"
    "fmt"
    "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)
    }
}
登录后复制

在此示例中,我们使用 strings.NewReader 从输入字符串创建字节流。然后我们创建一个 json.Decoder 来解码该流。

在一个循环中,我们重复调用 dec.Decode(&doc) 将每个 JSON 对象解码为我们的 Doc 结构。循环一直持续到流结束,此时 err 被设置为 io.EOF。

通过利用 json.Decoder,我们可以有效地解析多个 JSON 对象,即使它们没有括在括号中,从而允许我们可以处理各种 JSON 数据格式。

以上是如何在Go中解析不带括号的多个JSON对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板