我有一个后台服务叫REST-Api。然后将该API的结果反序列化到我的实体中:
public class Item {
[JsonProperty("pkID")]
public int Id {get;set;}
}
JsonConvert.DeserializeObject<Item>(responseString);这个很好用。但是我也想以JSON-字符串的形式返回结果,这样我就可以从前端使用它了。现在使用JsonConvert.SerializeObject(item)序列化类型"Item“的对象时,我希望返回以下内容
{ Id: 1 }相反,在序列化时,它也使用JsonProperty并返回
{ pkID: 1 }而不是。
如何告诉序列化程序在序列化时忽略JsonProperty,但在反序列化时使用它?
我并不是在搜索是否应该序列化属性,而是在序列化时是否使用propertyName或JsonProperty的名称。
发布于 2019-08-27 09:51:31
您可以使用指向“good”属性的只设置属性。
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}");发布于 2019-08-27 10:02:53
您可以使用自己的ContractResolver实现。
以下是一个可能有效的答案:https://stackoverflow.com/a/20639697/5018895
https://stackoverflow.com/questions/57671601
复制相似问题