gpt4 book ai didi

c# - 使用 JsonTextReader 值作为新流传递 Base64 编码的字符串

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:24:16 25 4
gpt4 key购买 nike

我们正在使用来自 HTTP Post 请求的大型 JSON 流。目标是使用 JsonTextReader 将传入的正文作为 JSON 流式传输,并将嵌入的 base64 编码二进制文件提取到磁盘。在 XML 中,等效的方法可能是XMLReader.ReadElementContentAsBase64Async。

使用 JSON.NET,当我们迭代时,我们如何将 encodedImages 数组的每一项发送到 FileStream 而无需将整个字符串保存在内存中。

示例 JSON 对象:

{
"company":"{clientCompany}",
"batchName":"{clientBatchName}",
"fileType":"{clientFileType}",
"encodedImages":[
"{base64encodedimage}",
"{base64encodedimage}",
"{base64encodedimage}"
],
"customFields":{
"{clientCustomField1}":"{clientCustomValue}",
"{clientCustomField2}":"{clientCustomValue}",
"{clientCustomField3}":"{clientCustomValue}",
"{clientCustomField4}":"{clientCustomValue}"
}
}

最佳答案

看来您的问题可以分两部分解决:1) 如何以内存高效的方式解析和处理 JSON,以及 2) 如何迭代地执行 base-64 解码

1) 内存高效的 JSON 解析:

假设您可以使用 Newtonsoft JSON.net 库、JsonReaderReadAsBytesReadAsBytesAsync 方法类将成为你最好的 friend ,因为它们允许基于流的迭代处理,这将使你在 JSON 解析和处理期间最小化你的内存占用。为避免为整个文档编写低级解析代码,您可以考虑为示例的 encodedImages 节点编写一个 JsonConverter 实现。

2)迭代base-64解码

大多数 base-64 解码实现解码整个字符串。对迭代缓冲解码的支持(如 XmlReaderReadElementContentAsBase64Async 方法所支持)需要维护一些状态。深入研究该类的实现,您会发现内部 Base64Decoder类正是您所需要的。

关于c# - 使用 JsonTextReader 值作为新流传递 Base64 编码的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46670994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com