gpt4 book ai didi

c# - 在 JsonConvert.SerializeObject 中自定义标识参数

转载 作者:行者123 更新时间:2023-11-30 19:56:41 27 4
gpt4 key购买 nike

Json.Net中默认的ident好像是2个空格:

var result = JsonConvert.SerializeObject(jsonString, Formatting.Indented);

为清楚起见,我想将其更改为 4 个空格,但我似乎没有找到应用该属性的正确方法。它似乎存在,因为我找到了一些类似的代码(直接链接 here ):

using (JsonTextWriter jw = new JsonTextWriter(sw))
{
jw.Formatting = Formatting.Indented;
jw.IndentChar = ' ';
jw.Indentation = 4;

jw.WriteRaw(config.ToString());
}

...除此之外,如果可能的话,我希望避免在这种情况下不必要地处理流。

有什么建议吗?

最佳答案

我会创建一个实用类,用正确的缩进序列化它,类似于 JsonConvert.SerializeObject 的做法:

public static class JsonConvertEx
{
public static string SerializeObject<T>(T value)
{
StringBuilder sb = new StringBuilder(256);
StringWriter sw = new StringWriter(sb, CultureInfo.InvariantCulture);

var jsonSerializer = JsonSerializer.CreateDefault();
using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
{
jsonWriter.Formatting = Formatting.Indented;
jsonWriter.IndentChar = ' ';
jsonWriter.Indentation = 4;

jsonSerializer.Serialize(jsonWriter, value, typeof(T));
}

return sw.ToString();
}
}

然后像这样消费它:

class Program
{
static void Main(string[] args)
{
var anon = new { Name = "Yuval", Age = 1 };
var result = JsonConvertEx.SerializeObject(anon);
}
}

关于c# - 在 JsonConvert.SerializeObject 中自定义标识参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33100164/

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