Dies mag voreilig sein, postgre 9.4 ist immer noch in der Beta-Phase. Ich habe mit dem jsonb-Typ experimentiert. Ich habe kein Glück, wenn ich versuche, einen jsonb-Typ an eine plv8-Funktion zu übergeben, er kommt als Zeichenfolge an. Ich frage mich, ob ich etwas falsch mache?
create or replace function jt ( o json ) returns integer language plv8 immutable
AS $function$
plv8.elog(INFO, 'Typ ist ', typeof o);
plv8.elog(INFO, 'Argument ist ', o);
plv8.elog(INFO, 'Element ist ', o['member']);
$function$;
create or replace function jt ( o jsonb ) returns integer language plv8 immutable
AS $function$
plv8.elog(INFO, 'Typ ist ', typeof o);
plv8.elog(INFO, 'Argument ist ', o);
plv8.elog(INFO, 'Element ist ', o['member']);
$function$;
dann, wenn ich mit json ausführe:
psql=# select jt('{"member":"test"}'::json);
INFO: Typ ist Objekt
INFO: Argument ist [Objekt Objekt]
INFO: Element ist test
aber, wenn ich mit jsonb ausführe:
psql=# select jt('{"member":"test"}'::jsonb);
INFO: Typ ist Zeichenfolge
INFO: Argument ist {"member": "test"}
INFO: Element ist nicht definiert
-g