为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕莱坞森 2023-09-24 10:49:58
我有一个调用 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 中的名称。
查看完整描述

2 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

您可以使用指向“好”属性的仅设置属性。


public class Item

{

    public int Id { get; set; }


    [JsonProperty("pkID")]

    public int BackwardCompatibleId { set => Id = value; }

}


// test

var x = new Item { Id = 88 };

var json = JsonConvert.SerializeObject(x); // {"Id":88}

var clone = JsonConvert.DeserializeObject<Item>("{\"pkId\":99}");


查看完整回答
反对 回复 2023-09-24
?
守着一只汪

TA贡献1872条经验 获得超3个赞

您可以使用自己的 ContractResolver 实现。

查看完整回答
反对 回复 2023-09-24
  • 2 回答
  • 0 关注
  • 65 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信