Re: JSON for PG 9.2 - Mailing list pgsql-hackers

From Benedikt Grundmann
Subject Re: JSON for PG 9.2
Date
Msg-id 20111222082133.GO7768@ldn-qws-004.delacy.com
Whole thread Raw
In response to Re: JSON for PG 9.2  (Claes Jakobsson <claes@surfar.nu>)
List pgsql-hackers
Let me mention another lightweight data-interchange format.

At http://www.janestreet.com we have developed a small c module to deal
with S-expressions (sexp) as a way to store arbitrary data.  As we write
most of our code in OCaml sexps are a natural way for us to store data.
http://hg.ocaml.info/release/sexplib/ provides automatic ways to convert
"any" ocaml value into a sexp).

The extension is still pretty new but we use it successfully on a daily
basis.  After we have upgraded to 9.x we will pack it as an extension 
and releast it opensource.

API wise the module at the moment offers the following:

sexp_validate(text) returns boolean
Validate that the passed in text is a valid s expression.

create domain sexp as text check (sexp_validate(value));

BTW: It is a PITA that arrays of domains are not valid types.

And several functions to manipulate take apart sexp's or modify sexp's
using a path into the sexp (similar to what xpath does for xml).

Such as:

sexp_get(sexp, text) returns sexp
Get the sub sexp of sexp identified by the path.  
Returns NULL if path is not a valid path in sexp.
Example:  path=.a space.b.[1].x  ((ignore this) ("a space" ((b (0 ((also ignored) (x "The Value")) )) )))
-> "The Value"

And sexp_get_atom(sexp, text) returns text
Get the sub atom of sexp identified by the path.  
Returns NULL if path is not a valid path in sexp or
does not identify an atom.
Example:  path=.a space.b.[1].x  ((ignore this) ("a space" ((b (0 ((also ignored) (x "The Value")) )) )))
                                       ^^^^^^^^^
 
-> The Value

Cheers,

Bene

On 20/12/11 19:39, Claes Jakobsson wrote:
> On Dec 20, 2011, at 12:39 AM, David E. Wheeler wrote:
> > On Dec 19, 2011, at 2:49 AM, Dimitri Fontaine wrote:
> > 
> >> My understanding is that JSON is a subset of ECMAscript
> > 
> > Well, no, JSON is formally “a lightweight data-interchange format.” It’s derived from JavaScript syntax, but it is
nota programming language, so I wouldn’t say it was accurate to describe it as a subset of JS or ECMAScript.
 
> > 
> >  http://json.org/
> 
> Are people explicitly asking for a) *JSON* datatype or b) a type that lets you store arbitrary complex semi-untyped
datastructures?
 
> 
> if b) then this might get a lot more interesting
> 
> Cheers,
> Claes
> -- 
> Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers


pgsql-hackers by date:

Previous
From: amit sehas
Date:
Subject: Re: Cursor behavior
Next
From: Leonardo Francalanci
Date:
Subject: Re: Page Checksums