在Go中解析多个JSON对象

使用该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数据(请参阅示例)。

我怎样才能做到这一点?

回答:

假设您的输入确实是一系列有效的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对象 的全部内容, 来源链接: utcz.com/qa/416962.html

回到顶部