2013-08-09 19 views
5

Ich übergebe eine einfache JSON-Zeichenfolge von meinem C# -Client an meinen Webservice. Im Anschluss ist die Zeichenfolge ichKonnte kein Objekt aus JSON-String erstellen

senden "{\" Name \ ": \" S1 \ "}"

Im Dienst Ende habe ich den folgenden Code

class DataDC 
{ 

    public String attr { get; set; } 
    public String attrVal { get; set; } 

} 

JavaScriptSerializer json_serializer = new JavaScriptSerializer(); 
DataDC dc = (DataDC)json_serializer.DeserializeObject(str); 

bekomme ich folgende Fehler

"Kann nicht Objekt des Typs gegossen 'System.Collections.Generic.Dictionary`2 [System.String, System.Object]' 'DataDC' eingeben."

+0

Sie sollten Ihre Klasseneigenschaften wie die in JSON – makim

+1

nennen, wie soll Ihr JSON-Deserializer über das DataDC-Objekt wissen und wie man es abbildet? – njzk2

Antwort

20

Sollte es nicht so sein, um die Klasse zu deserialisieren:

JavaScriptSerializer json_serializer = new JavaScriptSerializer(); 
DataDC dc = json_serializer.Deserialize<DataDC>(str); 

Eine andere Sache ist, dass Sie Name-Parameter in Ihrer Modellklasse don haben daher nichts an sie übergeben werden. Ihre JSON sollte wie folgt sein: "{\" attr \ ": \" einen Wert \ "\ "attrval \": \ "einen Wert \"}"

Oder Ihre Modellklasse ändern:

+0

Es funktioniert ..Thks –

+0

@sameer könnten Sie bitte erwähnen, welche der beiden Vorschläge Ihnen geholfen (oder beide)? – elolos

+0

@elolos Der erste –

0

Der Grund, warum Sie es nicht deserialisieren können, ist, dass es nicht wie Ihre Klasse aussieht. Sie sollten eine Klasse wie folgt erstellen:

public class DataDC 
{ 
    public string name{get; set;} 
} 
1

Ihr JSON-String/Objekt eine der Eigenschaften von DataDC nicht

Um Match für diese zu arbeiten, würden Sie müssen zumindest eine Eigenschaft genannt haben Name innerhalb der Klasse. z.B.

public class DataDC 
{ 

    public string name { get; set; } 
    public string attr { get; set; } 
    public string attrVal { get; set; } 

} 

Auf diese Weise erhalten Sie möglicherweise eine Eigenschaft zugeordnet.

Gehen Sie mit Ihrer vorhandenen Klasse, Sie benötigen die folgende JSON-Zeichenfolge;

"{ \"attr\":\"S1\", \"attrVal\":\"V1\" }" 

Hinweis: Sie können den folgenden Code auch zum Deserialisieren verwenden;

DataDC dc = json_serializer.Deserialize<DataDC>(str); 
+0

immer noch bekomme ich den gleichen Fehler –

Verwandte Themen