Ich bin mit WCF WebInvokeAttribute
für deklarative JSON-Anfragen (DataContractJsonSerializer
), mit DataContractAttribute
/DataMemberAttribute
basierte Serialisierung.WebInvoke/DataContractJsonSerializer, '1,6276' nicht als 'double' analysiert werden
Ich benutze einen Dienst, der die Rückgabe von JSON mit Daten basierend auf verschiedenen Kulturen unterstützt. Standardmäßig verwendet dieser Dienst en-US-Kultureinstellungen, was bedeutet, dass das Dezimaltrennzeichen "." Ist.
Ich habe eine Klasse, die eine System.Double
Eigenschaft hat. Wenn ich Daten mit Hilfe einer Kultur anfordern, die „“ als Dezimaltrennzeichen verwendet, habe ich eine SerializationException
erhalten beim Versuch, den Wert für diese Eigenschaft deserialisieren, wenn das Parsen System.Double
:
„Es war ein Fehler, das Objekt deserialisiert vom Typ XXX. Der Wert '1,6276' kann nicht als Typ 'doppelt' geparst werden. "
Dies ist sicherlich, weil eine invariante Kultur verwendet wird, während der Double zu analysieren. Ich hoffte, dass das Einstellen der richtigen Kultur auf dem aktuellen Thread dies beheben würde, aber es tat es nicht.
So werden die Dienste für Kulturen, die nicht verwenden "." als Dezimaltrennzeichen.
Ich werde die Hilfe zu schätzen wissen.
Danke!
Bitte erläutern Sie ein wenig besser, warum Kultur ein Faktor in Ihrem Dienst ist und wie sich dieser von anderen Diensten unterscheidet. Ich hätte erwartet, von diesem Problem schon einmal gehört zu haben, wenn es üblich war. –
Dies ist der Service-Client: http://www.codeproject.com/KB/WCF/GeoNames-WCFClient.aspx Ein Benutzer dieser Komponente entdeckte zuerst diesen Fehler, lesen Sie den Dererialization Error-Thread am unteren Rand. Vielen Dank – baretta