我应该将我们的JSON输出转换成规范的JSON。
我的两个问题是:
startup.cs ?我的同事编写了使用Newtonsoft的JsonWriter和JsonReader方法创建JSON文件的方法。
我已经在一个新的类中重写了DefaultContractResolver,以便按字母顺序对键进行排序,但未能在启动时找到适当的点来添加这些设置。另外,我也错过了删除所有缩进、新行等选项。
这是我的CanonicalContractResolver
public class CanonicalContractResolver : DefaultContractResolver
{
public override JsonContract ResolveContract(Type type)
{
var contract = base.CreateContract(type);
// remove Intendation here
return contract;
}
protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
{
return base.CreateProperties(type, memberSerialization).OrderBy(p => p.PropertyName).ToList();
}
}前面提到的JsonReader和JsonWriter类(需要规范的JSON输出)在startup.cs中的Configure方法中是这样链接的--我真的不明白应该在哪里添加在CanonicalContractResolver类中所做的更改。
services.AddControllers()
.AddNewtonsoftJson(options => {
options.SerializerSettings.Converters.Add(new SignaturesConverter());
options.SerializerSettings.Converters.Add(new PolicyConverter());
});我是软件工程师的初学者,这是我第一篇关于Stackoverflow的文章。我已经在这个主题上研究了6-7个小时,但是Newtonsoft文档非常稀少,对我没有多大帮助。
提前感谢大家的帮助!
发布于 2022-09-20 01:53:17
您可以设置NewtonsoftJson的Format属性。
如果您设置为Indented
services.AddControllers()
.AddNewtonsoftJson(options => {
options.SerializerSettings.Formatting = Formatting.Indented;
});然后输出如下所示:

如果您设置为None
services.AddControllers()
.AddNewtonsoftJson(options => {
options.SerializerSettings.Formatting = Formatting.None;
});然后输出如下所示:

https://stackoverflow.com/questions/73772764
复制相似问题