63

コードは次のとおりです。

        string s = "2012-08-08T01:54:45.3042880+00:00";

        JObject j1 = JObject.FromObject(new
        {
            time=s
        });

        Object o = j1["time"];

oが文字列であり、「2012-08-08T01:54:45.3042880 + 00:00」に等しいことを確認できます

ここで、j1.ToString()を別のプログラムに転送します。

       {
          "time": "2012-08-08T01:54:45.3042880+00:00"
       }

次に、他のプログラムで、それを解析してJObjectに戻します。

       JObject j2 = JObject.Parse(j1.ToString());

       Object o2 = j2["time"];

ここで、o2をチェックすると、o2のタイプはDate、o2.ToString()は8/7/20129:54:45PMです。

私の質問は:

JObject.Parseの日付の逆シリアル化を無効にして、生の文字列を取得する方法はありますか?

前もって感謝します

4

2 に答える 2

87

objecttoから解析する場合、日付の処理方法を指示JObjectする a を指定できます。JsonSerializer

JObject.FromObject(new { time = s },
                   new JsonSerializer {
                          DateParseHandling = DateParseHandling.None
                   });

残念ながらParse、このオプションはありませんが、あると意味があります。のソースを見るとParse、 a をインスタンス化しJsonReader、それを に渡すだけであることがわかりますLoadJsonReader解析オプションがあります。

次のようにして、目的の結果を得ることができます。

  using(JsonReader reader = new JsonTextReader(new StringReader(j1.ToString()))) {
    reader.DateParseHandling = DateParseHandling.None;
    JObject o = JObject.Load(reader);
  }
于 2012-08-08T02:25:34.320 に答える