【问题标题】:.NET JSON Serialization with extra properties具有额外属性的 .NET JSON 序列化
【发布时间】:2020-01-25 02:50:28
【问题描述】:

我有一个 REST API,它在“野外”为应用程序提供服务并且工作正常。 API 和消费者使用相同的数据模型,因此 API 以 JSON 格式返回的对象直接解析为消费者中的数据对象。这一切都很好。我很确定我正在使用 Flurl 接收使用 Newtonsoft.JSON 反序列化的数据。

现在我想向数据模型(以及数据库中的后端数据条目)添加一些内容,以使 API 功能更强大。这些不是消费者应该关心的属性,但是如果我将它们添加到数据模型对象中,API 将传递它们并返回它们。 .NET 消费者会抱怨还是忽略它们?

例如说我现在作为用户返回了这个:

{
  Username: "something",
  Email: "someone@somewhere.com"
}

但是,如果我对 API 进行更改,它将返回如下内容:

{
  Username: "something",
  Email: "someone@somewhere.com",
  Search: "SOME SEARCH FIELD DATA"
}

消费者会开始抛出反序列化错误还是忽略额外的值?我尝试谷歌,但我发现的只是关于如何自己反序列化 JSON 数据的东西......

由于它是公开的,如果这会引发错误,我将不得不以不同的方式进行操作,但不必这样做真的很好。

【问题讨论】:

    标签: .net json rest serialization json.net


    【解决方案1】:

    额外的字段将被忽略。如果您尝试将 JSON 反序列化为对象类,并且该类缺少 JSON 中存在的某些字段,则缺少的字段将不会被反序列化。

    如果您更改 JSON 中的数据类型,将会破坏消费者方面。

    例如,将Username: "something" 更改为Username: 100 会破坏消费者,因为您只是将数据类型从string 更改为int

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-27
      • 2021-12-09
      • 1970-01-01
      • 2017-03-02
      • 2012-09-16
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      相关资源
      最近更新 更多