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);

しかし、「{"Error conversion value \"2012-04-22 04:14:28,478\" to type 'System.DateTime'」という JsonSerializationException を取得します。行 1、位置 31."}。ログ形式を変更できません。

コンバーターを使用して自分で日付文字列を解析する必要があると思います。JsonConverterただし、関連していると思われる例は見つかりません。reader具体的には、メソッドから値を読み取るReadJson方法。

私が見るべき簡単な例はありますか?それとも、これについて間違った方法で行っていますか?

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 に答える