Eller: Hvorfor ved højre hånd ikke hvad venstre gør?
Jeg har tidligere plederet for at man skulle ligge sig op ad MS’s System.Web.Script.JavaScriptSerializer til serialicering af Json objekter, og specielt datoer. Det virker super fint, selvom jeg har været noget ked af formatets læsbarhed (en egenskab som ikke er helt ubetydelig). Nu bliver jeg så opmærksom på at alle de store browsere: IE, Firefox og Chrome er begyndt at understøtte native Json serialicering. Ja man kan nu skrive følgende, uden at inkluderer 3. parts biblioteker:
var json = JSON.stringify(new Date());
alert(json);
Men hvordan serialicerer den nye parser så datoer? Jo resultatet er overraskende: 2009-09-16T22:00:00Z
Implementeringen understøtter iso datoer som også kendes fra xml!
Det er jo dyb krise at man på den ene side har en server teknologi der serialicerer datoer på en måde, og en klient teknologi der serialicerer på en anden.
Bruger man System.Web.Script.JavaScriptSerializer på serveren, kan man ikke udnytte den overlegne performance som serializeren har på klienten.
Heldigvis understøtter JSON.parse en mulighed for at man efterbehandler resultatet, inden objektet returneres. Man giver bare metoden en funktion som 2. parameter:
var date = JSON.parse(json, function(key, value){
// Implementer efterbehandling
});
Det åbner muligheden for at man på klienten kan understøtte MS’s specielle format, og Rick Stahl har implementeret den form for efterbehandling i et minimalt bibliotek, så man kan håndterer MS dato serialicering.
Det løser problemet, men havde højre hånd bare vidst hvad venstre foretog sig…
Code on…