强制在对象类型的属性中反序列化DateTime

时间:2017-01-16 08:44:27

标签: c# json datetime serialization

我有一个对象,其属性类型为“object”(需要这个有一个通用代码)。

            }, {
            "Desc": "Date ouverture",
            "Id": "DatOuverture",
            "Mode": 0,
            "Valeur": "\/Date(1482966000000+0100)\/"
        }, {

我用DataContractJsonSerializer序列化它,我有这个:

Valeur = "\/Date(1482966000000+0100)\/"

因此,当我反序列化它时,序列化程序在字符串中输入“Valeur”,而不是在dateTime中。

display: block
margin: 0 auto

我试过“AlwaysTransmitTypeInformation”,但是没有改变。 当我在序列化之前写入属性时,她处于“DateTime”类型,而不是字符串。

有关信息,Valeur可以是dateTime的其他类型。

有人有想法吗?

方面。

1 个答案:

答案 0 :(得分:0)

您可以在constructing your serializer object

时使用DataContractJsonSerializerSettings指定日期格式
public class Item
{
    public object Value { get; set; }
}


class Program
{
    static void Main()
    {
        var settings = new DataContractJsonSerializerSettings
        {
            DateTimeFormat = new DateTimeFormat("o"),
        };
        var serializer = new DataContractJsonSerializer(typeof(Item), settings);

        var item = new Item { Value = DateTime.UtcNow };
        serializer.WriteObject(Console.OpenStandardOutput(), item);
    }
}

将序列化为:

{"Value":"2017-01-16T08:50:47.9127678Z"}

作为替代方案,您可以使用Json.NET,这可以让您更好地控制序列化过程。