c# - 在 json.net 中转换为 DateTime

标签 c# .net json datetime json.net

我正在尝试反序列化以下内容:

{"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/

相关文章:

python - Aiohttp 尝试获取带有页码的页面响应,直到达到空响应

c# - 系统参数异常 : Parameter is not valid

c# - 如何在 C# 中监视剪贴板更改?

c# - MVC ActionResult 调用另一个 ActionResult

.net - 表单例份验证票 : how to keep the user logged in after the browser has been closed?

python - 如何将此 unicode 转换为字典?

c# - 在 .NET 中截取屏幕截图后出现运行时错误

c# - 在服务器中启动新进程是否存在安全漏洞?

c# - 为什么编译器为此需要复杂的语法?

json - 加载 .json 文件会生成 404 错误