转换为 json.net 中的日期时间
本文关键字:日期 时间 net json 转换 | 更新日期: 2023-09-27 18:32:07
我正在尝试反序列化以下内容:
{"ts":"2012-04-22 04:14:50,669", "msg":"Hello"}
到
public class LogEntry
{
public DateTime Ts { get; set; }
public string Msg { get; set; }
}
用
var logEntry = JsonConvert.DeserializeObject<LogEntry>(line);
但是得到一个 JsonSerializationException,上面写着"{"转换值时出错 ''"2012-04-22 04:14:28,478''" 键入"System.DateTime"。第 1 行,位置 31。我无法更改日志格式。
我想我可能需要使用转换器自己解析日期字符串。但是,我找不到任何似乎相关的JsonConverter
示例。具体介绍如何从ReadJson
方法中的reader
读取值。
有什么简单的例子值得我看吗?还是我走错了路?
DateTime 字符串上的格式使用逗号作为小数分隔符 ( ,478
)。您可以使用适当的Culture
初始化JsonSerializerSettings
对象(在此处记录),然后使用DeserializeObject<T>(value, settings)
(在此处记录)进行反序列化。这将使用您指定的区域性而不是默认InvariantCulture
进行反序列化。
我怀疑这个问题是因为您获得的值使用逗号作为小数分隔符,这表明它是在使用逗号的区域设置中创建的(例如,英语以外的许多欧洲语言)。您可以尝试更改区域设置以匹配,以便解析有效?