JSON
september 10, 2008 Henrik
För att undvika den i mitt tycke något konstlade debatten om XML och JSON kan vi meddela att LIBRIS numera även har stöd det sistnämnda formatet. Detta i vårt nyligen lanserade lättvikts-API, Xsearch. De metadataelement som används (title, creator, publisher, etc.) är hämtade från Dublin Core-formatet.
JSON är ett mycket enkelt, rättframt och läsbart sätt att tagga upp data, som dessutom är väldigt smidigt att använda i JavaScript-baserade webbtillämpningar. Dublin Core i sin tur är ett mycket använt metadataformat, och vi tror att dessa två i kombination kan utgöra ett bra alternativ till alla som inte vill lära sig MARC-XML.
Exempel: URL:en http://libris.kb.se/xsearch?query=metadata&format=json ger de tio högst rankade träffarna på sökningen ”metadata”, i just JSON-format.
Filed under: Utveckling
Hej,
varför inte köra en workshop så att vi som vill kan testa lite och få lite idéer kring smarta användningsområden?
Jag tycker det vore väldigt kul!
Bra idé och skulle vara väldigt roligt! Återstår att se om och när det skulle gå att pressa in i en pressad tid- och verksamhetsplan.
Vi får återkomma helt enkelt.
Hej,
Jag hittade just er webbservice genom att googla. JSON är ett väldigt bra format, men ett sätt att göra det ännu mera användbart är att införa en ‘callback’-parameter. Då får man något som brukar kallas för JSONP. Det gör att jag kan anropa direkt från Javascript (genom att använda xmlHttpRequest). Examplet ovan skulle bli:
http://libris.kb.se/xsearch?query=metadata&format=json&callback=myfunction
och följande skulle returneras:
myfunction({”xsearch”: {
”from”: 1,
”to”: 10,
”records”: 168,
”list”: [
{
”title”: ”Metadata : en bok om hur webbdokument kan katalogiseras och göras sökbara”,
”creator”: ”Hedman, Thomas,1946-2004″,
….})
Mycket behändigt, och en känd metod för att komma runt ‘cross-domain’ problems.
De flesta som serverar JSON har en sådan finess, så jag hoppas att ni också kommer att erbjuda det.
Vänliga hälsningar,
Torbjörn Lager
Hej!
Nu finns callbackfunktionalitet implementerad! Man anger alltså valfritt funktionsnamn i parametern ”callback” (fungerar endast för formatet json). Detta medför att svaret bäddas in i ett funktonsanrop till angiven funktion. Prova exempelvis länken konstruerad av Torbjörn ovan. Denna funktionalitet borde naturligtvis funnits från början, men man kan inte tänka på allt…
Tack för tipset!
Hej Henrik,
Härligt! Tusen tack för den snabba responsen!
Vänliga hälsningar,
Torbjörn Lager
Hej Henrik!
Tänk att jag mejlade först utan att kolla om ni faktist hade en blogg. Hur som helst så vill jag tacka för JSON-stödet. Det gör det enkelt att använda tjänsten. Dock finns det ett problem med översättningen mellan JSON och Dublin Core. JSON har inte stöd för samma namn på fälten. Detta gör att man bara kan få ut de sista värdena från resultatet. Exempelvis så får man bara ut den sista författaren om det finns flera. Jag mejlade exempel till libris@kb.se på hur det bör lösas istället.
//Joackim
Hej Joackim!
Det stämmer bra att namnen i json måste vara unika. Din föreslagna lösning borde fungera och vi hoppas kunna åtgärda det hela inom inte allt för lång tid.
/Henrik
Hej igen,
så har det äntligen blivit sommar och lite tid över för att fixa gamla synder: json-formatet är nu uppdaterat!
Hej!
Tack för dessa välfungerande webbsidor!
Jag tycker att en önskvärd förbättring skulle vara att uppdatera JSONP (och JSON), så att den även innefattar klassifikationen med både KSSB och DDK, inklusive dubbel och trippel klassifikation när det är aktuellt.
Tack så mycket!
Saašha,
Saašhas önskemål är nu implementerat, se separat inlägg.
//Pelle, LIBRIS