我目前正在尝试通过基于以下json结构的RestSharp调用初始化私有字典:
{
"id":1012,
"name":"DataObject",
"fileInformaton":{
"name": {
"value:" "image.png"
},
"editable": {
"value:" "no",
...
},
}
}
该课程:
public class Dto
{
[JsonProperty]
private Dictionary<string, Dictionary<string, string>> FileInformation { get; set; } = new Dictionary<string, Dictionary<string, string>>();
public string Name { get { return FileInformation["name"]["value"] } }
}
但这种情况并不奏效。它只适用于我使用私有设置器将字典设置为public:
public class Dto
{
[JsonProperty]
public Dictionary<string, Dictionary<string, string>> FileInformation { get; private set; } = new Dictionary<string, Dictionary<string, string>>();
}
我没有将字典设置为公开的原因是因为我不想仅通过公共财产提供整个密钥。
答案 0 :(得分:1)
jsonserializer不会序列化私有属性/字段。您可以通过为序列化程序实现自定义ContractResolver
来解决此问题。但是我不确定在DTO中将属性或字段声明为private
的原因是什么。
为了澄清问题,这与初始化本身无关,在两种情况下都会初始化dicationary。但是当声明为私有属性时,它将被jsonserializer忽略。