2017-01-11 1 views
0

Im Folgenden erhalten, ist die gültige JSON, die meinen Dienst beim Aufruf zurückkehrt:JSON Deserialisierung in C# Nullwerte in allen Datenelemente

[{ 
    "CCRQ": "2006/1/26 0:00:00", 
    "CLXH": "CA6510B1", 
    "CarBodyColor": "color" 
}] 

Unten ist mein Code enthält Datamembers:

[DataContract] 
public class Response 
{ 
    [DataMember(Name = "CCRQ")] 
    public string CCRQ { get; set; } 

    [DataMember(Name = "CLXH")] 
    public string CLXH { get; set; } 

    [DataMember(Name = "CarBodyColor")] 
    public string CarBodyColor { get; set; } 
} 

ich jedoch Ich stelle eine Anfrage an Service und empfange Null in allen Datenmitgliedern.

public static Response MakeRequest(string requestUrl) 
{ 
    HttpWebRequest request = WebRequest.Create(requestUrl) as HttpWebRequest; 
    using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
    { 
     DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(Response)); 

     object objResponse = jsonSerializer.ReadObject(response.GetResponseStream()); 
     Response jsonResponse = objResponse as Response; 
     return jsonResponse; 
    } 
} 

Warum bekomme ich Null in allen Attributen?

+1

ist die 'objResponse' Variable null oder nicht? Das Problem liegt aber wahrscheinlich in "typeof (Response)", da der JSON vom Typ 'List ' ist und nicht 'Response'. – Julo

+0

Von Ihrer Verwendung von '[DataContract]' werde ich davon ausgehen, dass Sie Web-Service WCF verwenden. Warum erstellen Sie eine 'HttpWebRequest'? Sie können Ihrem Projekt eine Servicereferenz hinzufügen, und die gesamte Deserialisierung wird für Sie erledigt. –

+0

@Julo, Problem wegen Abwesenheit der Liste <>. Fehler wurde behoben. Danke :) –

Antwort

1

Ihr JSON ist ein Array mit 1 Objekt-Inhalt. Was ich sehen kann, erwartet Ihr Deserializer ein Objekt.

Versuch als Antwort

{ 
    "CCRQ": "2006/1/26 0:00:00", 
    "CLXH": "CA6510B1", 
    "CarBodyColor": "color" 
} 

oder gegossene Reaktion auf objResponse as List<Response>

+0

der Mann oben löste gerade mein Problem :) Danke J. Vergeer –

Verwandte Themen