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

C#使用Newtonsoft.Json序列化Dictionary<string, int>输出JSON带反斜杠如何解决

问题根因
  • 你对数据执行了两次JSON序列化操作:
    1. 首次调用JsonConvert.SerializeObject(aux)已经将字典对象转为带双引号的JSON字符串
    2. 后续调用serializer.Serialize(sw, json)时,序列化器会将输入的字符串视为普通文本,对内部的双引号自动加反斜杠转义,最终就出现了多余的转义符。
修复方案

两种方案二选一即可:

方案1:直接写入已序列化的JSON字符串

无需再调用JsonSerializer二次序列化,直接将生成的JSON字符串写入文件即可,还可以通过参数配置格式化输出,匹配你期望的缩进格式:

// 序列化时指定Formatting.Indented输出带缩进的格式化JSON
string json = JsonConvert.SerializeObject(aux, Formatting.Indented);
// 直接写入文件
File.WriteAllText(@".\..\..\..\OutputData\" + art.FileNames[i] + ".json", json);

方案2:直接序列化字典对象到文件

不提前调用JsonConvert.SerializeObject,直接把原始字典对象传给JsonSerializer进行序列化:

using (StreamWriter sw = File.CreateText(@".\..\..\..\OutputData\" + art.FileNames[i] + ".json"))
{
    JsonSerializer serializer = new JsonSerializer();
    // 配置格式化输出
    serializer.Formatting = Formatting.Indented;
    // 直接传入字典对象,不要传入提前序列化好的字符串
    serializer.Serialize(sw, aux);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:39:03