【发布时间】:2013-11-22 14:56:04
【问题描述】:
我有一个包含类类型元素的列表,其中包含一个属性
[DataMember]
public DateTime? DateOfBirth { get; set; }
我将整个列表序列化为一个文件,如下所示:
JsonSerializer serializer = new JsonSerializer();
serializer.Converters.Add(new JavaScriptDateTimeConverter());
serializer.NullValueHandling = NullValueHandling.Ignore;
using (StreamWriter sw = new StreamWriter(@"c:\json.txt"))
using (JsonWriter writer = new JsonTextWriter(sw))
{
serializer.Serialize(writer, _myList);
}
当我尝试像这样反序列化时:
JsonSerializer serializer = new JsonSerializer();
serializer.Converters.Add(new JavaScriptDateTimeConverter());
string text = System.IO.File.ReadAllText(@"c:\json.txt");
_myList = JsonConvert.DeserializeObject<List<UserInformation>>(text);
我收到以下错误:
在“命名空间”上将值设置为“出生日期”时出错。
- 编辑-
Json 看起来像:"DateOfBirth":new Date(-1459735200000)(当 DateOfBirth == null 时我找不到它的样子)
我是一个使用 Json 的初学者,我很难理解它,有人可以向我解释一下是什么问题以及如何解决这个问题?
提前致谢
【问题讨论】:
-
JSON 是什么样的?
-
您使用的是 wcf 还是 Web API?如果您手动进行序列化,我会推荐 newtonsoft json 序列化器,而不是使用 WCF 打包的序列化器。 (甚至 Microsoft 也使用 NewtonSoft 序列化程序用于 WebApi):从 nuget 控制台安装包 Newtonsoft.Json -- 如果您想了解更多信息,请回复评论,我会发布答案。
-
它可能与您的 json 中不同的日期时间字符串有关。您可能需要使用像 newtonsoft json.net 这样的东西以获得更大的灵活性
-
捕捉 JMarsch - 我的想法完全正确
-
@MichaelPerrenoud 我在编辑中添加了 Json。
标签: c# json datetime serialization