使用 JsonProperty 进行反序列化但不序列化[重复]

我有一个调用 REST-Api 的后端服务。然后该 API 的结果被反序列化到我的实体中:


public class Item {

  [JsonProperty("pkID")]

  public int Id {get;set;}

}


JsonConvert.DeserializeObject<Item>(responseString);

这很好用。但我还想以 JSON 字符串的形式返回结果,以便我可以从前端使用它。现在使用序列化我的“Item”类型的对象时,JsonConvert.SerializeObject(item)我想返回类似的内容


{ Id: 1 }

相反,在序列化时,它还使用 JsonProperty 并返回


{ pkID: 1 }

反而。


如何告诉序列化器在序列化时忽略 JsonProperty,但在反序列化时使用它?


我不是在寻找属性是否应该序列化的方法,而是在序列化时是否应该使用 propertyName 或 JsonProperty 中的名称。


慕莱坞森
浏览 69回答 2
2回答

慕慕森

您可以使用指向“好”属性的仅设置属性。public class Item{&nbsp; &nbsp; public int Id { get; set; }&nbsp; &nbsp; [JsonProperty("pkID")]&nbsp; &nbsp; public int BackwardCompatibleId { set => Id = value; }}// testvar x = new Item { Id = 88 };var json = JsonConvert.SerializeObject(x); // {"Id":88}var clone = JsonConvert.DeserializeObject<Item>("{\"pkId\":99}");

守着一只汪

您可以使用自己的 ContractResolver 实现。
打开App,查看更多内容
随时随地看视频慕课网APP