首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JsonProperty反序列化但不序列化

使用JsonProperty反序列化但不序列化
EN

Stack Overflow用户
提问于 2019-08-27 09:27:57
回答 2查看 1.2K关注 0票数 0

我有一个后台服务叫REST-Api。然后将该API的结果反序列化到我的实体中:

代码语言:javascript
复制
public class Item {
  [JsonProperty("pkID")]
  public int Id {get;set;}
}

JsonConvert.DeserializeObject<Item>(responseString);

这个很好用。但是我也想以JSON-字符串的形式返回结果,这样我就可以从前端使用它了。现在使用JsonConvert.SerializeObject(item)序列化类型"Item“的对象时,我希望返回以下内容

代码语言:javascript
复制
{ Id: 1 }

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

代码语言:javascript
复制
{ pkID: 1 }

而不是。

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

我并不是在搜索是否应该序列化属性,而是在序列化时是否使用propertyName或JsonProperty的名称。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-27 09:51:31

您可以使用指向“good”属性的只设置属性。

代码语言:javascript
复制
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}");
票数 4
EN

Stack Overflow用户

发布于 2019-08-27 10:02:53

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

以下是一个可能有效的答案:https://stackoverflow.com/a/20639697/5018895

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57671601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档