有没有办法如何以编程方式启用/禁用指定的属性名称的使用[JsonProperty]?
当我序列化时:
public class Dto
{
[JsonProperty("l")]
public string LooooooooooooongName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在"调试"中看到输出:
{
"LooooooooooooongName":"Data"
}
Run Code Online (Sandbox Code Playgroud)
并且"在发布中":
{
"l":"Data"
}
Run Code Online (Sandbox Code Playgroud)
只需创建一个解析器来处理这项工作。
public class NoJsonPropertyNameContractResolver : DefaultContractResolver
{
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
JsonProperty property = base.CreateProperty(member, memberSerialization);
property.PropertyName = property.UnderlyingName;
return property;
}
}
Run Code Online (Sandbox Code Playgroud)
以及启动代码中的某处
#if DEBUG
JsonConvert.DefaultSettings = () => new JsonSerializerSettings()
{
ContractResolver = new NoJsonPropertyNameContractResolver()
};
#endif
Run Code Online (Sandbox Code Playgroud)
现在,您的调试和发布版本之间的行为不一致(但为什么?)。
| 归档时间: |
|
| 查看次数: |
399 次 |
| 最近记录: |