Os titulares de parâmetros não são entendidos dentro de literais:
'...:nom...' conterá os caracteres :nom , não os valores vinculados de nom . Para PostgreSQL 9.5 (e posterior), use:
SELECT * FROM contrat WHERE contrat_json @> jsonb_build_object('nom', :nom)
Para 9.4:
SELECT * FROM contrat WHERE contrat_json @> CAST(json_build_object('nom', :nom) AS jsonb)
Para 9.3 (e anteriores), não há operador de contenção JSON (nem o
jsonb modelo). https://rextester.com/AUHP11519