【问题标题】:Sending C# Reserved Word as Property of PostData Api发送 C# 保留字作为 PostData Api 的属性
【发布时间】:2018-04-06 06:33:55
【问题描述】:

我有一些JSON 发送到我的C# API,如下所示

 {
  "currency": "BTC",
  "amount": "0.00049659",
  "type": "bankToExchange"
 }

问题是当模型到达我的控制器时,type 属性更改为@type,这导致发布请求失败。

我尝试连接的 API 使用 type,因此无法更改。该帖子在Postman 中工作,所以有解决办法吗?

【问题讨论】:

    标签: c# api asp.net-web-api


    【解决方案1】:

    使用 JsonProperty 在您的类型上添加 DataMember 名称属性:

    [DataMember(Name = "@type")] //if not using NewtonSoft
    [JsonProperty("@type")] //if using NewtonSoft
    public string type { get; set; }
    

    【讨论】:

      【解决方案2】:

      使用带有属性名称的数据成员属性。您可以通过为您的 json 创建类来使用,如下所示

          [DataContract]
          public class Sample{
               [DataMember(Name = "@type")]
               public string Type{get;set;}
          }
      

      您也可以尝试另一种方法,如果添加注释以在属性名称前附加@,则更优雅且更有意义

           public class Sample{
                   public string @type{get;set;}
              }
      

      供参考:object to deserialize has a C# keyword

      【讨论】:

      • 所以我将它发送到第 3 方 api,所以这似乎不起作用
      • 哪个选项不起作用,第二个?你试过第一个。 @Sadique 已经建议如果您使用 Newton.Json 进行反序列化,那么您可以使用 JsonProperty。如果 3rd 方 API 是公开的,请告诉我端点,我可以自己尝试。
      猜你喜欢
      • 2012-02-09
      • 2016-03-21
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      • 2013-04-12
      • 2013-04-16
      • 1970-01-01
      • 2010-11-16
      相关资源
      最近更新 更多