Nyheter i IE 8: JSON
En nyhet i IE 8 är inbyggt stöd för att hantera JSON. De metoder som finns är stringify() och parse(). För den som inte vet vad JSON är så har jag en kort genomgång.
JSON är en förkortning för JavaScript Object Notation. Det är egentligen helt vanliga Javascript-objekt. Det används ofta i samband med Ajax då det innebär mycket mindre overhead än XML och går därmed snabbare att ladda.
Ett exempel på JSON:
var json = {
'firstname': 'Mikael',
'lastname': 'Söderström',
'age': 112,
'skills': ['ASP.NET', 'C#']
};
Det här är ett JSON-objekt skapat direkt med javascript. För att använda det i Ajax-sammanhang så har man tidigare fått använda eval(json-sträng) för att få det till objekt. Det innebär dock stora säkerhetsproblem då man kan exekvera i stort sett vilket javascript som helst. I Internet Explorer 8 så finns det dock nya metoder för att lösa detta.
För att använda objektet ovan så kan vi köra det här:
alert(json.firstname + ' ' + json.lastname);
Det som sker här är att en alert-ruta dyker upp med texten “Mikael Söderström”.
Om vi vill få hela vårt JSON-objekt till en sträng så kan vi med de nya API:erna använda stringify(). Säg att vi kör denna kod:
var jsonString = JSON.stringify(json);
alert(jsonString);
Det som sker nu är att vi får en alertruta med texten:
{"firstname":"Mikael","lastname":"S\u00f6derstr\u00f6m","age":112,"skills":["ASP.NET","C#"]}
Det är så her det hade sett ut om det hade kommit via ett Ajax-anrop.
Vill vi nu få den här strängen tillbaka till ett JSON-objekt så kan vi använda parse():
var parsedJson = JSON.parse(jsonString);
alert(parsedJson.firstname);
Det som sker nu är att vi återigen kan anropa objektet som vanligt.
Fördelarna med att använda dessa inbyggda funktioner är att vi får bättre prestanda och bättre säkerhet när vi arbetar med JSON.