2013-02-20 13 views
12

ich die folgende JSON Ergebnis int die Antwort erhalten:Deserialize JSON Wörterbuch mit DataContractJsonSerializer

{"result": { "":-41.41, "ABC":0.07, "XYZ":0.00, "Test":0.00 }} 

ich die folgende Klasse für deserializating vorbereitet haben:

[DataContract] 
public sealed class RpcResponse 
{ 
    [DataMember(Name = "result")] 
    public List<KeyValuePair<string, decimal>> Result { get; set; } 
} 

Allerdings, wenn ich Tring deserialize es mit DataContractJsonSerializer die Eigenschaft Result endet mit null Einträge. (Funktioniert auch nicht bei der Deklaration Result als Dictionary<string, decimal>)

Gibt es eine Möglichkeit, dies mit DataContractJsonSerializer durchzuführen?

Antwort

0

Ihre JSON-String repräsentiert ein Objekt mit einer Eigenschaft Ergebnis, dass sich ein Objekt mit 4 Eigenschaften ist: „“, ABC, XYZ und Test. Für Ergebnis eine Liste von KeyValuePairs zu sein, würde die JSON wie folgt aussehen:

{"result": [{ "":-41.41}, {"ABC":0.07}, {"XYZ":0.00}, {"Test":0.00 }] } 

Beachten Sie, dass, wenn Sie ein assoziatives Array in Javascript-Code verwenden, dass es als ein Objekt mit Eigenschaftswert serialisiert werden wird Paare, nicht als ein Array von Objekten. Wenn dies die Quelle der JSON-Zeichenfolge ist, müssen Sie möglicherweise zu einem normalen indizierten Array in Ihrem JS wechseln, um den richtigen JSON zu erhalten.

+0

ich JavaScript nicht überall verwenden, und auch ich kann nicht Format des Ergebnisses ändern. – Regent

Verwandte Themen