gpt4 book ai didi

c# - Json DateTime 序列化在 DataContractJsonSerializer 和 System.Json 中是不同的

转载 作者:太空狗 更新时间:2023-10-29 19:47:16 25 4
gpt4 key购买 nike

我怎样才能强制DataContractJsonSerializer接受System.Json日期时间序列化格式 (ISO 8601) ?

问题是 System.Json 输出“2012-03-01T16:24:55.000”格式,但 DataContractJsonSerializer 需要“/Date(1329161615596+0200)/”格式。

我有这个错误:反序列化 xyz 类型的对象时出错。日期时间内容“2012-03-01T16:24:55.000”未按照 JSON 的要求以“/Date(”开头并以“)/”结尾。

最佳答案

您可以编写一个适配器类,它在反序列化过程中预处理您的序列化数据,并将所有其他函数连接到密封的 DataContractJsonSerializer 类。

public class DataContractSystemJsonSerializer : XmlObjectSerializer
{

protected DataContractJsonSerializer innerSerializer;


public DataContractSystemJsonSerializer(Type t)
{
this.innerSerializer = new DataContractJsonSerializer (t);
}
...

public override Object ReadObject(Stream stream)
{
Object obj = null;
MemoryStream out = new MemoryStream();
Byte[] buf = new Byte[64];
stream.Read(buf,0,64);

int i = 0;
while(stream.Read(buf,i,1))
{
convertDatesInBuffer(&buf, &i);

out.write(buf, i, 1);

i = (i+1)%64;
}

return innerSerializer.ReadObject(out);
}

}

关于c# - Json DateTime 序列化在 DataContractJsonSerializer 和 System.Json 中是不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12202001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com