知识卡片
流式解码与一次性解封的取舍
内容
Go解析XML/JSON提供两条路径:Unmarshal要求先把全部数据读进内存变成一个字节切片,再一次性解封成结构,用法简单但无法处理超大文件或持续到达的数据流;Decoder则包裹一个io.Reader,一个元素/token接一个地解码,可以在数据还没完全到达时就开始处理。发散:这是”批处理”与”流处理”两种数据消费模式在同一个库里并存的例子,判断该用哪种不是看”数据格式复杂。
参考来源
- 位置:《Go Web编程》第7章《Go Web服务》(源文件:_epub-src/OEBPS/text00021.html)
- 结论依据:原文在该章节围绕“Go解析XML/JSON提供两条路径:`Unmarshal`要求先把全部数据读进内存变成一个字节切片,再一次性…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。
- 原始内容:储到一些结构里面,然后通过访问这些结构来获取XML记录的数据。下面是分析XML时常见的两个步骤: (1)创建一些用于存储XML数据的结构; (2)使用 xml.Unmarshal 将XML数据解封(unmarshal)到结构里面,如图7-2所示。 图7-2 使用Go对XML进行分析:将XML解封至结构 代码清单7-1展示了一个简单的XML…