繁体   English   中英

无法将JSon反序列化为C#

[英]Can't deserialize JSon to C#

我在Windows窗体应用程序.net 4中返回了以下JSon,但是我可以获取头像URL! 尝试产生空值或在我当前的尝试中出现意外字符以下的尝试

这是JSon:

{"self":"http://jira.prod.xxxxxx.com/rest/api/2/user?username=firstname.lastname","key":"zzzzzz","name":"firstname.lastname","emailAddress":"firstname.lastname@xxxxxxxxxx.com","avatarUrls":{"16x16":"http://jira.prod.xxxxxx.com/secure/useravatar?size=xsmall&ownerId=zzzzzz&avatarId=12500","24x24":"http://jira.prod.xxxxxx.com/secure/useravatar?size=small&ownerId=zzzzzz&avatarId=12500","32x32":"http://jira.prod.xxxxxx.com/secure/useravatar?size=medium&ownerId=zzzzzz&avatarId=12500","48x48":"http://jira.prod.xxxxxx.com/secure/useravatar?ownerId=zzzzzz&avatarId=12500"},"displayName":"Lastname, FirstName","active":true,"timeZone":"Europe/Dublin","locale":"en_UK","groups":{"size":1,"items":[]},"applicationRoles":{"size":1,"items":[]},"expand":"groups,applicationRoles"}

这是我当前尝试获取URL的尝试,上面的json在“结果”中传递:我正在使用Newtonsoft JSON库

var response = JsonConvert.DeserializeObject<myselfResponse>(result);

 public class myselfResponse
{
    [JsonProperty("username")]
    public string username { get; set; }

    [JsonProperty("key")]
    public string key { get; set; }

    [JsonProperty("name")]
    public string name { get; set; }

    [JsonProperty("emailAddress")]
    public string emailAddress { get; set; }

    //public AvatarUrls avatarUrls { get; set; }

    [JsonProperty("avatarUrls")]
    public string avatarUrls { get; set; }
}

public class AvatarUrls
{
    public string _16x16 { get; set; }
    public string __invalid_name__24x24 { get; set; }
    public string __invalid_name__32x32 { get; set; }
    public string __invalid_name__48x48 { get; set; }
}

我得到的错误是意外字符

任何帮助将不胜感激...

您似乎已经注释掉了AvatarUrls类型的正确属性,并将其替换为字符串属性。 不要那样做

而且,您已经发现可以使用JsonProperty属性将JSON属性的属性名称设置为任何名称。 因此,取消注释该行,删除多余的字符串属性,然后对“无效名称”属性执行此操作:

[JsonProperty("16x16")]
public string Size16x16 { get; set; }

或者,如果您希望它是动态的,则根本不要使用单独的对象并执行以下操作:

[JsonProperty("avatarUrls")]
public Dictionary<string, string> AvatarUrls { get; set;}

请注意,通过使用JsonProperty您还可以在C#中使用正确的命名并大写属性名称。

暂无
暂无

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

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