Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在json.net中转换为DateTime_C#_.net_Json_Datetime_Json.net - Fatal编程技术网

C# 在json.net中转换为DateTime

C# 在json.net中转换为DateTime,c#,.net,json,datetime,json.net,C#,.net,Json,Datetime,Json.net,我正在尝试反序列化以下内容: {"ts":"2012-04-22 04:14:50,669", "msg":"Hello"} 进入 使用 var logEntry=JsonConvert.DeserializeObject(行); 但是得到一个JsonSerializationException,上面写着“{”将值\“2012-04-22 04:14:28478\”转换为类型“System.DateTime”。第1行,位置31。“}。我无法更改日志格式 我想我可能需要自己使用转换器来解析日期

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

{"ts":"2012-04-22 04:14:50,669", "msg":"Hello"}
进入

使用

var logEntry=JsonConvert.DeserializeObject(行);
但是得到一个JsonSerializationException,上面写着“{”将值\“2012-04-22 04:14:28478\”转换为类型“System.DateTime”。第1行,位置31。“}。我无法更改日志格式

我想我可能需要自己使用转换器来解析日期字符串。但是,我找不到任何相关的
JsonConverter
示例。特别是如何从
ReadJson
方法中的
读取器
读取值


有没有简单的例子我应该看一下?或者我是不是走错了方向?

我怀疑问题是因为你得到的值使用逗号作为十进制分隔符,这表明它是在使用逗号的区域设置中创建的(例如,除英语外的许多欧洲语言)。您可以尝试更改您的区域设置以进行匹配,以便解析工作?

日期时间字符串上的格式使用逗号作为十进制分隔符(
,478
)。您可以使用适当的
区域性
初始化
jsonserializesettings
对象(),然后使用
反序列化对象进行反序列化(值、设置)
()。这将使用您指定的区域性而不是默认的
InvariantCulture

反序列化。stack apps上的这个问题似乎满足了您的需要:谢谢。是的,我以前见过,但由于ReadJson方法中的代码被注释掉,我认为这不是一个很好的示例。向下滚动示例,会发现ReadJson方法的未注释版本。无论如何,示例的基本原理都是正确的。逗号是因为它是十进制分隔符。我更感兴趣的是帮助Json.net解析某些内容的一般方法。看起来不错。但是,我的Json.net版本(由于依赖性原因,目前无法升级)JsonSerializerSettings.Successful上没有区域性或日期*属性。:/在这种情况下,我猜您是被迫执行自定义转换器路径。是否有用?
public class LogEntry
{
    public DateTime Ts { get; set; }
    public string Msg { get; set; }
}
var logEntry = JsonConvert.DeserializeObject<LogEntry>(line);