如何在C#中反序列化带连字符属性的JSON文件
如何在C#中反序列化带连字符的JSON属性?
C#的标识符不允许包含连字符,所以没法直接用prop-1作为类的字段/属性名,这时候可以通过特性来建立JSON属性和C#成员的映射关系,具体分两种常用JSON库的情况:
1. 使用System.Text.Json(.NET Core/.NET 5+默认库)
给模型类的成员添加[JsonPropertyName]特性,指定对应的JSON属性名:
using System.Text.Json.Serialization; class MyJson { [JsonPropertyName("prop-1")] public string Prop1; }
之后正常执行反序列化即可:
MyJson? myJson = JsonSerializer.Deserialize<MyJson>(jsonStr);
2. 使用Newtonsoft.Json(Json.NET)
如果项目用的是Newtonsoft.Json,对应的特性是[JsonProperty]:
using Newtonsoft.Json; class MyJson { [JsonProperty("prop-1")] public string Prop1; }
反序列化代码:
MyJson? myJson = JsonConvert.DeserializeObject<MyJson>(jsonStr);
这两种方式都能解决带连字符JSON属性的反序列化问题,核心就是通过特性显式指定JSON属性和C#成员的对应关系,绕开C#标识符的命名限制。
内容的提问来源于stack exchange,提问作者paul h
相关产品推荐
相关产品推荐

