猿问

解组 json 流(不以换行符分隔)

我想将 JSON 流转换为对象流。使用换行符分隔的 JSON 很容易做到这一点。来自 Go 文档:https : //golang.org/pkg/encoding/json/#Decoder.Buffered


但是,我需要从这样的 JSON 数组生成一个流:


        [{"Name": "Ed", "Text": "Knock knock."},

        {"Name": "Sam", "Text": "Who's there?"},

        {"Name": "Ed", "Text": "Go fmt."},

        {"Name": "Sam", "Text": "Go fmt who?"},

        {"Name": "Ed", "Text": "Go fmt yourself!"}]

什么是执行此操作的高性能方法?

我考虑过这种方法:

  1. 去掉外面的尖括号

  2. 当有匹配的顶级大括号时,解组大括号(包括)之间的字符串以一次获取一个顶级对象。

我不想这样做,因为两次扫描字符串的每个部分会影响性能。

我能做的最好的选择是复制 Golang encoding/json 包中解码器的源代码并修改它,以便它返回一个 Reader 一次吐出一个对象。但是对于这样一个简单的要求来说,这似乎太多了。

有没有更好的方法来解码 JSON 数组流?


慕哥6287543
浏览 177回答 2
2回答
随时随地看视频慕课网APP

相关分类

Go
我要回答