gpt4 book ai didi

c# - 使用Newtonsoft如何避免 ":"后的tailing space空间

转载 作者:行者123 更新时间:2023-12-05 08:12:27 24 4
gpt4 key购买 nike

使用 JSON 写入文件后

File.WriteAllText(fileName, JsonConvert.SerializeObject(jsonToWrite, Formatting.Indented)). 

我在每个“:”之后得到一个尾部空格。如何避免?

当前为红色,预计为绿色 enter image description here

最佳答案

添加空格的代码位于JsonTextWriter.WriteIndentSpace中,由标准的JsonWriter调用。

一个可能的选择是编写您自己的 JsonTextWriter 派生类,覆盖 WriteIndentSpace 并且不在其中执行任何操作。

class MyWriter : JsonTextWriter
{
public MyWriter(TextWriter sw) : base(sw)
{ }

protected override void WriteIndentSpace()
{ }
}

然后您需要编写自定义序列化代码才能实际使用此编写器

    static string Convert(object value, JsonSerializerSettings settings)
{
JsonSerializer jsonSerializer = JsonSerializer.CreateDefault(settings);
StringBuilder sb = new StringBuilder(256);
StringWriter sw = new StringWriter(sb, CultureInfo.InvariantCulture);
using (var jsonWriter = new MyWriter(sw))
{
jsonWriter.Formatting = jsonSerializer.Formatting;

jsonSerializer.Serialize(jsonWriter, value, null);
}

return sw.ToString();
}

然后您可以使用您想要的任何设置调用它,并且永远不会插入 IndentSpace

var json = Convert(myObject, new JsonSerializerSettings{ Formatting = Formatting.Indented });

如果您确切地知道每次要使用的设置,则可以简化一些代码。

dotnetfiddle

关于c# - 使用Newtonsoft如何避免 ":"后的tailing space空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68571220/

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