登录
首页 >  Golang >  Go问答

在 Go 中解析多个 JSON 对象

来源:Golang技术栈

时间:2023-03-02 21:13:52 290浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《在 Go 中解析多个 JSON 对象》,这篇文章主要会讲到golang等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

encoding/json使用包可以很容易地解析像下面这样的对象。

[ 
    {"something":"foo"},
    {"something-else":"bar"}
]

我面临的问题是当服务器返回多个字典时,如下所示:

{"something":"foo"}
{"something-else":"bar"}

这无法使用下面的代码进行解析。

correct_format := strings.Replace(string(resp_body), "}{", "},{", -1)
json_output := "[" + correct_format + "]"

我正在尝试解析 Common Crawl 数据(参见[示例](http://index.commoncrawl.org/CC- MAIN-2018-17-index?url=*.netflix.com&output=json))。

我怎样才能做到这一点?

正确答案

假设您的输入确实是一系列有效的 JSON 文档,请使用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)
    }
}

游乐场: https: //play.golang.org/p/ANx8MoMC0yq

如果您的输入确实是您在问题中显示的内容,那不是 JSON,您必须编写自己的解析器。

终于介绍完啦!小伙伴们,这篇关于《在 Go 中解析多个 JSON 对象》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表