Lille fix Json extension

by Jesper september 04, 2009 08:35

Rigtigt mange af de applikationer jeg rører ved, har Ajax kald der returnerer objekter der har datoer med som payload. Jeg har scriblet lidt om Json datoer tidligere, men mangler lige en lille funktion, som jeg har taget mig selv i at skrive igen og igen. En klientside funktion, der kan omsætte Json-datoen til et JavaScript Date objekt.

Jeg synes en sådan extension, hører til som en statisk metode på Date objektet, så jeg implementerer den som en sådan. Det er måske lidet kendt, men alt i JavaScript er objekter – også funktioner, så man laver en statisk metode ved at tildele en objektet metoden direkte på den ønskede property, som så i dette tilfælde bliver en funktion – en statisk funktion.

Det centrale i en sådan funktion, er det regulære udtryk, som skal bruges i replace. Der er en lille faldgrubbe i udtrykket, da vi leder efter kombinationen ‘\/’. Begge karakterer er specielle sprogelementer i det regulære udtryk, så man skal escape dem, og mønsteret bliver til: ‘\\\/’ – nemlig hele 3 backslashes. Det er selvfølgelig bare med til at gøre udtrykket mere funky (og og mig mere nørdet, når jeg kan diske op med det).

Alt i alt ender vi op med en extension der ser således ud:

Date.parseJson = function(json) {
    var re = /\\\/Date(\d+)\\\//;
    var code = json.replace(re, "new Date($1)");
    if (code != this) 
	throw new Error (“Ikke en Json dato: ” + json);

    return eval(code);
};

Nu kan vi parse Json datoer:

var date = Date.parseJson("\/Date(1250753602336)\/");

Code on…

Tags:

JavaScript | Regex

Kommentarerne er lukkede

Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen | Modified by Mooglegiant

About

Mit navn er Jesper Jensen, og jeg arbejder til dagligt som web-udvikler hos DGI, hvor mit speciale er klientside applikationer. Før det var jeg nogle år i robotbranchen, hvor jeg arbejdede med 3D simulering og system koordinering. Jeg elsker webudvikling, og specielt JavaScript har min interesse. Jeg har blogget om mine oplevelser med udvikling siden 2004

Calendar

<<  juli 2010  >>
mationtofr
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

View posts in large calendar

RecentComments

Comment RSS