2012-04-12 2 views
0

Ich habe die Grid-Ansicht und binde sie an den Datenaufruf vom REST-basierten Webdienst. REST-Dienst gibt es im JSON-Format, also wie kann ich deserialize und für mein Grid verwenden?C# winform: JSON-Daten serialisieren/deserialisieren, die vom REST-Service zur Verwendung in der Anwendung kommen

Hier ist der Code ich habe,

public ICollection<Employee> GetEmployees() 
    { 
     var request = HttpWebRequest.Create(GetEndPointAddress("GetEmployeeService")); 
     var response = request.GetResponse(); 
     var stream = response.GetResponseStream(); 
     var serializer = new DataContractSerializer(typeof(ICollection<Employee>)); 
     var employees = serializer.ReadObject(stream) as ICollection<Employee>; 
     response.Close(); 
     return employees; 
    } 

public Uri GetServiceBaseAddress 
    { 
     get 
     { 
      return new Uri("http://localhost/Employeeservices/api"); 

     } 
    } 

private Uri GetEndPointAddress(string relativeAddress) 
    { 
     return new Uri(GetServiceBaseAddress.ToString() + "/" + relativeAddress); 
    } 

Ich bin unten Störung zu erhalten:

ein Fehler war, das Objekt vom Typ System.Collections.Generic.ICollection`1 Deserialisieren [[ EmployeeApp.Models.Employee, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null]]. Die Daten auf der Stammebene sind ungültig. Linie

Auch, wie kann ich die Daten zurück zum Service buchen, wenn ich Änderungen an diesen Daten mache?

Antwort

0

Das Problem ist, dass Sie DataContractSerializer verwenden, der ein XML-Serializer ist. Sie können keinen XML-Serializer verwenden und erwarten, dass JSON-Daten deserialisiert werden, da es sich um zwei völlig unterschiedliche Datenformate handelt.

Zunächst überlegen Sie, ob die Verwendung von DataContractJsonSerializer überhaupt eine Option für Sie ist. Meine Vermutung ist, dass dies nicht der Fall ist, weil die Verwendung von DCJS mit eigenen Anforderungen, Einschränkungen und Terminologie verbunden ist, mit denen Sie wahrscheinlich entweder nicht vertraut sind, wenig Flexibilität haben, um sich damit vertraut zu machen, oder einfach nur übertrieben. Um herauszufinden, ob dies eine Option ist, überprüfen Sie the JSON API reference und die stand-alone JSON serialization Proben.

Meine beste Empfehlung ist, dass Sie das Json .NET Framework verwenden. Sehen Sie http://json.codeplex.com/, um zu sehen, was Sie damit tun können - es ist wahrscheinlich der einfachste Weg, Sie mit .NET und JSON zu beginnen.

Verwandte Themen