我应该将我们的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
复制相似问题