区块链技术博客
www.b2bchain.cn

使用Newtonsoft创建自定义JsonConverter时尊重JsonSerializer设置 – c#程序员分享

本文介绍了使用Newtonsoft创建自定义JsonConverter时尊重JsonSerializer设置 – c#程序员分享,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

我为特定类型创建了一个自定义JsonConverter。

public class FooNewtonsoftConverter : JsonConverter<Foo>{     public override void WriteJson(JsonWriter writer, Foo value, JsonSerializer serializer)     {         writer.WriteStartObject();          // Should it be serialized as "Id" or "id"?         writer.WritePropertyName("id");         writer.WriteValue(value.Id);          writer.WriteEndObject();     } } 

可以自定义JsonSerializer以使用其他命名策略,例如CamelCasePropertyNamesContractResolver或将NamingStrategy更改为CamelCaseNamingStrategy

您也可以用JsonProperty装饰属性以更改名称。

如何为正在序列化的属性解析正确的属性名称?

参考方案

如果您查看内置的KeyValuePairConverter,您会发现它们使用了

var resolver = serializer.ContractResolver as DefaultContractResolver;  writer.WritePropertyName((resolver != null) ? resolver.GetResolvedPropertyName(KeyName) : KeyName);  

在您的方案中,它看起来像这样:

public class FooNewtonsoftConverter : JsonConverter<Foo>{     public override void WriteJson(JsonWriter writer, Foo value, JsonSerializer serializer)     {         writer.WriteStartObject();          var resolver = serializer.ContractResolver as DefaultContractResolver;         writer.WritePropertyName(resolver?.GetResolvedPropertyName("Id") ?? "Id");         writer.WriteValue(value.Id);          writer.WriteEndObject();     } } 

我有一个像下面这样的json:{ "d": { "results": [ { "__metadata": { }, "prop1": "value1", "prop2": "value2", "__some&#…

我有一个像bellow的json数组:{ "store": { "book": [ { "category": "reference", "author": "Nigel Rees", "title": "Sa…

有人在this bug附近吗?echo json_encode(array('url'=>'/foo/bar')); {"url":"/foo/bar"} 我使用Zend_Json and Zend_Json_Expr以便我甚至可以在js对象中获取回调函数-但我无法获得…

我正在使用json module创建一个包含类似条目的json文件json.dumps({"fields": { "name": "%s", "city": "%s", "status": "%s", "cou…

我想从外部API检索足球联赛的集合。来自服务器的响应如下所示:{ "api": { "results": 1496, "leagues": [ { "league_id": 1, ….. 返回的对象由“ api”字段组成,其中包含“结果”和“联盟”。我想反序列化代码并将其映射…

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 使用Newtonsoft创建自定义JsonConverter时尊重JsonSerializer设置 – c#程序员分享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们