我正在尝试反序列化以下内容:
{"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 说“{”Error converting value\"2012-04-22 04:14:28,478\"to type 'System.DateTime'。第 1 行,位置 31。"}。我无法更改日志格式。
我想我可能需要使用转换器自己解析日期字符串。但是,我找不到任何似乎相关的 JsonConverter
示例。具体如何在ReadJson
方法中从reader
读取值。
有没有我应该看的简单示例?还是我的做法有误?
最佳答案
DateTime 字符串的格式使用逗号作为小数点分隔符 (,478
)。您可以初始化 JsonSerializerSettings
具有适当 Culture
的对象 ( documented here) ,然后使用 DeserializeObject<T>(value, settings)
反序列化(documented here)。这将使用您指定的区域性而不是默认的 InvariantCulture
进行反序列化。 .
关于c# - 在 json.net 中转换为 DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10312254/