You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中生成Yahoo要求的特定JSON格式方案咨询

解决Yahoo集成项目的JSON格式要求

方案一:基于NewtonSoft.Json实现逐对象序列化

直接遍历数据集合,逐个序列化每个对象到文件,每个对象单独占一行,完全匹配Yahoo的格式要求,同时内存友好,适合处理百万级数据量:

using (TextWriter writer = File.CreateText(dataFileLocation))
{
    var serializer = new JsonSerializer
    {
        Formatting = Formatting.None // 禁用格式化,减少文件体积与序列化耗时
    };
    
    foreach (var item in data)
    {
        using (var jsonWriter = new JsonTextWriter(writer))
        {
            serializer.Serialize(jsonWriter, item);
        }
        writer.WriteLine(); // 每个对象后添加换行符
    }
}

这种方式无需生成完整的JSON数组,而是逐行处理单个对象,避免一次性将百万级数据加载到内存中(若data是流式可枚举集合,还能进一步降低内存占用),同时彻底规避了字符替换可能引发的数据损坏风险(比如对象字符串中包含[]或逗号时,替换操作会破坏原始数据)。

方案二:使用System.Text.Json实现(.NET Core/.NET 5+)

若允许更换JSON处理库,推荐使用.NET内置的System.Text.Json,其性能更优且无需额外依赖,同样支持逐行序列化:

using (var writer = new StreamWriter(dataFileLocation))
{
    var options = new JsonSerializerOptions
    {
        WriteIndented = false // 禁用缩进,提升序列化效率
    };
    
    foreach (var item in data)
    {
        string json = JsonSerializer.Serialize(item, options);
        writer.WriteLine(json);
        // 异步场景可改用 await writer.WriteLineAsync(json);
    }
}

System.Text.Json在处理大规模数据时内存开销更低,逐行序列化的逻辑确保输出格式完全符合要求,无需后续修改。

内容的提问来源于stack exchange,提问作者Nick A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 06:45:33