问题
使用 Newtonsoft.Json 框架 object 转 json,发现用 internal 修饰的属性,不能被转json
JsonConvert.SerializeObject(obj)
例如
internal sealed class CountSheet
{
internal List<CountSheetItem> ArrayOfItems { get; set; }
internal string AssignedUser { get; set; }
internal string Comments { get; set; }
internal string CountDate { get; set; }
internal int DocEntry { get; set; }
internal int DocNum { get; set; }
internal int LineCount { get; set; }
internal string Reference { get; set; }
internal int Started { get; set; }
}
属性值被声明为 internal 类型的,转 json 后,发现是空{}。
分析
查了资料发现 Newtonsoft.Json 这个框架支持 public 类型的属性转 json, 其他类型的不会被转,如果需要其他类型的也转 json,需要添加 [JsonProperty]
修饰。
internal sealed class CountSheet
{
[JsonProperty]
internal List<CountSheetItem> ArrayOfItems { get; set; }
[JsonProperty]
internal string AssignedUser { get; set; }
[JsonProperty]
internal string Comments { get; set; }
[JsonProperty]
internal string CountDate { get; set; }
[JsonProperty]
internal int DocEntry { get; set; }
[JsonProperty]
internal int DocNum { get; set; }
[JsonProperty]
internal int LineCount { get; set; }
[JsonProperty]
internal string Reference { get; set; }
[JsonProperty]
internal int Started { get; set; }
}
添加 [JsonProperty] 前需要先 using Newtonsoft.Json;
解决
- 将属性修饰为 public 类型
或
- 添加 [JsonProperty]