繁体   English   中英

Json.NET无法反序列化列表 <string> 从JSON数组

[英]Json.NET Failing to Deserialize List<string> from JSON Array

我在反序列化带有JSON.net的DeserializeObject的属性时遇到问题。 JSON格式正确,可以使用DeserializeObject提取并访问dynamic属性,但是当我从模型中反序列化时,该属性始终为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属性,但是我尝试过的任何方法都没有用。 任何人都可以帮助阐明这一点吗?

提前致谢。

如果包含EmailAddresses属性的类的名称为Example ,则应按如下所示反序列化JSON:

var restResponse = await client.ExecuteTaskAsync<Example>(request, cancelToken);

像往常一样,这是一个误解的问题。 我正在使用的客户端最近已切换到RestSharp.RestClient ,但是我们没有更新属性,因此忽略了它们。 一旦我们切换到适当的属性集,该字段就会被正确地反序列化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM