【问题标题】:how to remove fields from a json string in .net MVC Web Api如何从.net MVC Web Api中的json字符串中删除字段
【发布时间】:2014-06-02 17:17:09
【问题描述】:

在我的 REST 服务的 Get 方法中,

public HttpResponseMessage Get()
 {
  CustomerRepository lr = new CustomerRepository ();
  IQueryable<Customer> data = lr.GetCustomer();

  var resp = new HttpResponseMessage(HttpStatusCode.OK);
  resp.Content = new ObjectContent<IQueryable<Customer>>(data, new JsonMediaTypeFormatter());        
  return resp;
 }

以下测试示例将作为 json 字符串返回到视图:

{ id: '1', name:'California', type:'Student', parent:''}, //parent row
{ id: '2', name:'Harry', type:'Student', parent: '1' },
{ id: '3', name:'James', type:'Student', parent: '1' },
{ id: '4', name:'Sally', type:'Student', parent: '1'},

如何在将父行的父字段发送回 UI 之前将其删除:

{ id: '1', name:'California', type:'Student'}, //parent row
{ id: '2', name:'Harry', type:'Student', parent: '1' },
{ id: '3', name:'James', type:'Student', parent: '1' },
{ id: '4', name:'Sally', type:'Student', parent: '1'},

谢谢!

编辑:

我找到了解决方案。在我的客户类中,我只是装饰场地。

[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 public string parent { get; set; }

【问题讨论】:

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


    【解决方案1】:

    我同时遇到了这个问题和另一个问题,我需要在通过 API 发送它们之前加入两个表..

    我所做的是创建另一个仅包含我需要的字段的类,并创建了一个接受第一个对象的构造函数。

    因此,在这种情况下,我将创建一个带有 id、name、type 的“ParentFormat”类,并且 ParentFormat 的构造函数接收一个 Parent 对象……然后您在 API 中创建另一个 Get 方法来返回 ParentFormat。那里可能有更好的解决方案,但这对我来说很好,所以我希望它可以帮助你;)

    编辑:实际上我知道一些关于匿名类型的知识,但在我的脑海中,经过 2 秒的搜索,我发现了这个:http://msdn.microsoft.com/en-us/library/bb397696.aspx

    使用匿名类型似乎是个好方法,我一定会尝试一下

    【讨论】:

    • 我看到另一个人问了类似的问题,但他们使用了数据注释 EmitDefaultValue。但我无法用 DataContract 装饰我的类,用 DataMember 装饰我的属性以使用 EmitDefaultValue:stackoverflow.com/questions/10150312/…
    • 感谢回复,找到了更简单的方法:[JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public string parent { get;放; }
    • 感谢分享...将其添加为答案并接受它;)
    【解决方案2】:

    一般来说,当您没有非常简单的应用程序时,最好使用单独的 dto-classes/viewmodels(数据传输对象)。在大多数情况下,您不想公开所有数据,例如身份或敏感数据。您也不希望您的 api 与业务逻辑和/或数据模型耦合。

    您可以在此处阅读更多信息:Does it Make Sense to have ViewModels in the Webapi?

    Google 也有很多关于这个主题的博文。

    【讨论】:

      猜你喜欢
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 2018-07-29
      • 2018-11-13
      • 2020-03-01
      相关资源
      最近更新 更多