C#反序列化含特殊字符JSON属性(A/B映射到AB)求助
解决方案
首先检查你的JSON格式:你提供的JSON中每个对象的最后一个属性后存在多余逗号(比如"A/B": true,),这属于无效JSON语法,会导致解析异常,最终属性被设为默认值false。先修正JSON为有效格式:
{ "List": [ { "Name": "name", "A/B": true }, { "Name": "name1", "A/B": false } ] }
针对两种序列化库,分别提供可行实现:
一、使用System.Text.Json
定义对应的模型类,确保JsonPropertyName特性正确绑定JSON属性名:
public class RootObject { public List<Item> List { get; set; } } public class Item { public string Name { get; set; } [JsonPropertyName(@"A/B")] public bool AB { get; set; } }
反序列化代码示例:
string json = File.ReadAllText("your-json-file.json"); var result = JsonSerializer.Deserialize<RootObject>(json);
二、使用Newtonsoft.Json
定义模型类时使用JsonProperty特性:
public class RootObject { public List<Item> List { get; set; } } public class Item { public string Name { get; set; } [JsonProperty(@"A/B")] public bool AB { get; set; } }
反序列化代码示例:
string json = File.ReadAllText("your-json-file.json"); var result = JsonConvert.DeserializeObject<RootObject>(json);
额外排查点
- 确认你使用的序列化库版本没有已知bug,建议升级到最新稳定版。
- 检查是否存在其他代码逻辑覆盖了
AB属性的值(比如初始化时手动设为false)。
内容的提问来源于stack exchange,提问作者Elena2020
相关产品推荐
相关产品推荐

