Json.Net 6.0.3 ile zaman zaman hata ayıklamada sorun yaşıyorum (sorunu 6.0.6'da çoğaltabilirim). Kod, Windows 8.1'de .Net 4.5'te çalıştırılır ve kültür en-GB'tır. Json.Net deserialising DateTimes tutarsız bir şekilde
Bu
sorunu göstermektedir:using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
var d1 = new DateTimeOffset(2014, 12, 15, 18, 0, 0, TimeSpan.FromHours(1));
var obj = new {
time = d1
};
var json = JsonConvert.SerializeObject(obj, Formatting.Indented);
Console.WriteLine(json);
var jo = JObject.Parse(json);
Console.WriteLine(jo.Value<string>("time") + " // jo.Value<string>(\"time\")");
Console.WriteLine(jo["time"] + " // jo[\"time\"]");
çıkışı:
{
"time": "2014-12-15T18:00:00+01:00"
}
12/15/2014 17:00:00 // jo.Value<string>("time")
15/12/2014 17:00:00 // jo["time"]
tarih kez JObject erişilir nasıl bağlı olarak farklılık gösterir - biridir AA/GG/YYYY GG/AA/YYYY. Bu neden?
Belirli bir biçimde olması için onlara ihtiyacım yok: Sorun, biçimin değişmesidir. Json.Net kaynaklı datetime dizesini ayrıştıran bir sürü eski kodum var. Kod ayrıca dünyadaki farklı bilgisayarlarda, belki farklı kültürlerde çalışacaktır.
Json.Net'in her zaman datetimes'leri her zaman aynı biçimde döndürmesini sağlamanın bir yolu var mı?
jo["time"]
mi (sonuçta) konsola gerçek DateTime
değerini yazma:
Eh, ilk satırı konsola bir “JValue” yazıyor ... –
@JonSkeet: Evet, fazla basitleştirdim, fakat 'JValue' 'ToString' yöntemi temel değerin (bu durumda bir 'DateTime') çağrısını yapıyor. ToString' yöntemi. –
Sağ. Senin yerinde olsaydım, onu aşırı basitleştirirdim. Temel dayanak iyidir (bu yüzden kendi cevabımı terk ettim), ancak dönüşümler her yerdeyken bu konuda kesin olmak iyidir. –