【问题标题】:How do I override a name in JSON returned by ASP.NET如何覆盖 ASP.NET 返回的 JSON 中的名称
【发布时间】:2015-04-24 05:43:53
【问题描述】:

我在 ASP.NET Web API 2 应用程序中有以下代码:

[DataMember(Name = "override")]
public bool? _override;

但我收到的 JSON 中有名为 _override 的成员,而不是覆盖。如何更改 JSON 中的命名?

【问题讨论】:

  • 我不明白,您从某个地方接收到这个 JSON,并且在 JSON 中它有一个您想要更改的名称?那么答案就是与向您发送 JSON 的人交谈并要求他们更改它。
  • 我的 ASP.NET Web API 服务器应用具有上述声明。 ASP.NET 通过调用创建 JSON,在该调用中我传回包含上述成员的对象,ASP.NET 根据对象名称对对象进行 JSON 化。
  • [JsonProperty(PropertyName = "override")] 属性应该这样做
  • @shakib - 就是这样!如果您将其写为答案,我很乐意将其标记为解决方案。谢谢 - 戴夫

标签: json asp.net-web-api datamember


【解决方案1】:

由于 asp.Net Web API 2 在内部使用 Json.NET 进行 json 序列化/反序列化,

JsonProperty 属性可用于在序列化时覆盖属性名称。

所以[JsonProperty(PropertyName = "override")] 应该可以解决问题。

谢谢。

【讨论】:

    【解决方案2】:

    用你想输出的名字怎么样? public bool? @override;

    您也可以在方法上使用DataMember(Name="override) 属性,在类上使用DataContract 属性,然后也使用DataContractJsonSerializer 类对其进行序列化。

    有关如何使用 DataContractJsonSerializer 的完整示例,请参阅此帖子:JavaScriptSerializer - how to deserialize a property with a dash ("-") in it's name?

    【讨论】:

      猜你喜欢
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 2013-01-26
      • 2020-12-05
      相关资源
      最近更新 更多