2016-07-25 14 views
0

I Json.NET/newtonsoft und ich habe die folgende C# Klasse bin mit:Wie json Datum von C# Datetime zurück

public class EntityDefinition 
{ 
    [DataMember] 
    public string CreatedBy { get; set; } 
    [DataMember] 
    [JsonProperty(ItemConverterType = typeof(IsoDateTimeConverter))] 
    public DateTime CreatedOn { get; set; } 
} 

Wenn ich versuche, diese Klasse in meinem wcf zurückkehren Ich erhalte die folgende JSON:

{ 
    "GetDefinitionResult": { 
    "CreatedBy": "Dor", 
    "CreatedOn": "/Date(1466428742000+0300)/" 
    } 
} 

Wie kann ich das Datum erhalten, ohne das "Date (" analysiert werden, was bedeutet, nur die Millisekunden oder im ISO-Format "yyy-mm-dd"

ich versuchte, die JsonProperty mit Konverter, aber es gibt immer noch das "Date()"

[JsonProperty(ItemConverterType = typeof(IsoDateTimeConverter))] 
+0

Mögliche Duplikat (http [Wie json Datetime von WCF Data Services (OData) zurück zu handhaben]: // Stackoverflow. com/questions/3818719/how-to-handle-json-datetime-zurückgegeben-von-wcf-data-services-odata) – Oluwafemi

+1

['JsonPropertyAttribute.ItemConverterType'] (http://www.newtonsoft.com/json/help /html/P_Newtonsoft_Json_JsonPropertyAttribute_ItemConverterType.htm) ist der Konverter, der für * Sammelobjekte * verwendet werden soll. Sie möchten ['JsonConverter'] (http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_JsonConverterAttribute.htm). Aber warum hast du das [tag: wcf] markiert? WCF verwendet Json.NET nicht, es verwendet [DataContractSerializer'] (https://stackoverflow.com/questions/11153628). – dbc

+0

Können Sie ein [mcve] für Ihr Problem erstellen? Json.NET gibt standardmäßig keine Daten in diesem Format aus, daher denke ich, dass Sie unwissentlich 'DataContractSerializer' verwenden. – dbc

Antwort

1

WCF verwendet DataContractSerializer standardmäßig zur Serialisierung/Deserialisierung Nachrichten und das genannte Datumsformat ist sein Standardformat.

Wenn Sie die Art ändern möchten, in der Ihr WCF-Dienst Nachrichten serialisiert/deserialisiert, sollten Sie einige Dinge im Dienstverhalten ersetzen (hauptsächlich IDispatchMessageFormatter). Es ist jedoch zu lange hier zu beschreiben, und es gibt ein großes Tutorial über sie here

Good Luck

0

[JsonProperty(ItemConverterType = typeof(JavaScriptDateTimeConverter)) Versuchen oder CustomDateConverter verwenden, wie hier in Parsing JSON DateTime from Newtonsoft's JSON Serializer

erklärte
+1

Json.NET gibt das ISO 8601-Datumsformat standardmäßig für mehrere Jahre zurück. Die Frage, die Sie verknüpft haben, ist * SEHR * alt und gilt nicht mehr. –

+0

Danke. Gut zu wissen. – redsam