重命名 JsonSerializer 中的字段
我有一个类库,需要通过 ASP.NET MVC 框架中的 JsonResult 输出。 (JsonResult 使用 JsonSerializer 生成其输出。)
通过阅读文档,我发现如果将 [ScriptIgnore]
放在公共属性/字段上,它将不会被序列化,就像 [ XML 序列化程序的 XmlIgnore]
。
我需要 [XmlElement("elementname")]
的等效功能,它绝对指定输出序列化中的字段/属性的名称。我有一个名为 Elements
的字段,需要将其序列化为名为 elements
的字段。
如何使用默认的 JsonSerializer 来完成此任务?
谢谢, 大卫
I have a class library that I need to output via a JsonResult in the ASP.NET MVC framework. (JsonResult uses the JsonSerializer to produce its output.)
I discovered through reading the documentation that if you put [ScriptIgnore]
on a public property/field, it will not get serialized, much like [XmlIgnore]
for the XML serializer.
I need the equivalent functionality of [XmlElement("elementname")]
, which specifies absolutely the name of the field/property in the output serialization. I have a field called Elements
that needs to get serialized to a field named elements
.
How can I accomplish this using the default JsonSerializer?
Thanks,
David
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您是否使用 DataContractJsonSerializer 类?
如果是这样...
将此属性添加到您的
Elements
字段此 SO问题建议如何将 JsonScriptSerializer 的使用覆盖为 JsonDataContractSerializer。
善良,
丹
Are you using the DataContractJsonSerializer class?
If so ...
Add this attribute to you
Elements
fieldThis SO question suggests how to override the use of JsonScriptSerializer to JsonDataContractSerializer.
Kindness,
Dan
不幸的答案是,你做不到。话虽如此,我目前正在开发一个模块,该模块将通过在运行时生成一个匿名对象来扩展任何对象,该匿名对象将遵循属性(例如 JsonIgnore 或 JsonProperty)的规则。当我有东西的时候我会发布更多。
The unfortunate answer is, you cannot do it. Having said that, I am currently developing a module that will extend any object by producing at runtime an anonymous object that will follow rules from attributes, such as JsonIgnore or JsonProperty. I'll post more when I have something.
正确的属性是 JsonPropertyName.
The correct attribute for this is JsonPropertyName.