2016-07-02 7 views
0
kann nicht deserialisiert werden

Ich habe die folgenden JSon in meiner Windows Forms App .net 4 zurückgegeben, aber ich kann die Avatar-URLs bekommen! Ausbeute versucht wird, einen Nullwert oder in meinem aktuellen Versuch unter einem unerwarteten CharakterJSon zu C#

Hier ist die 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"} 

und hier ist mein aktueller Versuch, die URLs zu erhalten, wird die obige json in „Ergebnis geführt „: ich verwende Newtonsoft JSON Bibliothek

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

der Fehler i bekommen ist unerwartetes Zeichen

Jede Hilfe wäre g Vielen Dank im Voraus ...

Antwort

2

Sie scheinen die korrekte Eigenschaft des Typs AvatarUrls auskommentiert und durch eine String-Eigenschaft ersetzt zu haben. Tu das nicht.

Und wie Sie bereits festgestellt haben, können Sie die Eigenschaftsnamen für JSON-Eigenschaften auf alles mit dem JsonProperty-Attribut festlegen. So Kommentar- der Zeile, entfernen Sie den zusätzlichen String-Eigenschaft, und tun dies, um Ihre „ungültig Name“ Eigenschaften:

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

Oder wenn Sie es vorziehen, es dynamisch sein kein separates Objekt überhaupt verwenden und Dazu:

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

Beachten Sie, dass JsonProperty unter Verwendung Sie auch richtige Namensgebung in C# und kapitalisieren Eigenschaftsnamen verwenden können.

+0

Danke Matti – Adrian