我遇到了使用JSON.net的DeserializeObject反序列化属性的问题。 JSON格式正确,可以使用DeserializeObject提取并访问动态属性,但是当我从模型反序列化时,该属性始终为null。
我正在使用JSON.net的v10。
有问题的财产定义如下:
[JsonProperty(PropertyName = "email")]
public List<string> EmailAddresses { get; set; }
Json在下面:
"representative" : {
"id" : 16,
"username" : "jb",
"firstName" : "James",
"lastName" : "Bond",
"emailAddress" : "demo@backstopsolutions.com"
},
"email" : [ "test213@example.com", "test312@backstopsolutions.com" ],
"permissionTag" : "Public",
"website" : null,
当我用它的类型反序列化对象时,即
var restResponse = await client.ExecuteTaskAsync<T>(request, cancelToken);
该属性为null。
我可以执行以下操作,但我更倾向于弄清楚反序列化失败的原因。
dynamic jsonResponse = JsonConvert.DeserializeObject(restResponse.Content);
var tagsJArray = jsonResponse.email as JArray;
if (tagsJArray != null)
{
restResponse.Data.EmailAddresses = tagsJArray.ToObject<List<string>>();
}
我认为我错过了一个JsonProperty属性,但我没有尝试过任何工作。任何人都可以帮忙解释一下吗?
提前致谢。
答案 0 :(得分:0)
如果包含EmailAddresses
属性的类的名称是Example
,那么您应该反序列化您的JSON,如下所示:
var restResponse = await client.ExecuteTaskAsync<Example>(request, cancelToken);
答案 1 :(得分:0)