3

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

{"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似乎相关的例子。具体如何从方法中读取readerReadJson

有没有我应该看的简单例子?还是我以错误的方式解决这个问题?

4

2 回答 2

5

DateTime 字符串的格式使用逗号作为小数分隔符 ( ,478)。您可以使用适当的 初始化JsonSerializerSettings对象(在此处记录Culture,然后使用DeserializeObject<T>(value, settings)在此处记录)进行反序列化。这将使用您指定的文化而不是默认的文化来反序列化InvariantCulture

于 2012-04-25T09:02:53.780 回答
-1

我怀疑这个问题是因为你得到的值是使用逗号作为小数分隔符,这表明它是在使用逗号的语言环境中创建的(例如,除了英语之外的许多欧洲语言)。您可以尝试更改您的语言环境以匹配,以便解析工作?

于 2012-04-25T08:58:44.830 回答