在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 mainimport (
"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