2016-07-02 12 views
0

私のWindowsフォームapp .net 4には次のJSonが返されましたが、私はアバターURLを取得できます!ここでの試みnull値を得たり、予期しない文字以下の私の現在の試みで、どちらかJSONをC#に逆シリアル化できません

はJSONです:

{"self":"http://jira.prod.xxxxxx.com/rest/api/2/user?username=firstname.lastname","key":"zzzzzz","name":"firstname.lastname","emailAddress":"[email protected]","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は結果」に渡されます「: 私は

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; } 
} 

Newtonsoft JSONライブラリを使用しています私が手にエラーが予期しない文字はすべてのヘルプはグラムだろう

ですお返事ありがとうございます...

答えて

2

タイプAvatarUrlsの正しいプロパティをコメントアウトして、文字列プロパティに置き換えたようです。それをしないでください。

既に発見したように、JSONプロパティのプロパティ名をJsonProperty属性のものに設定できます。だから、その行のコメントを解除し、余分な文字列プロパティを削除し、あなたの「無効な名前」プロパティに次の操作を行います。

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

それとも、動的にすることを好む場合は、すべての個別のオブジェクトを使用していないとJsonPropertyを使って、あなたはまた、C#で正しいネーミングを使用してプロパティ名を大文字できること

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

注:この操作を行います。

+0

ありがとうMatti – Adrian

関連する問題