Les détenteurs de paramètres ne sont pas compris à l'intérieur des littéraux :'...:nom...' contiendra les caractères :nom , pas les valeurs liées de nom .
Pour PostgreSQL 9.5 (et versions ultérieures), utilisez :
SELECT * FROM contrat WHERE contrat_json @> jsonb_build_object('nom', :nom)
Pour 9.4 :
SELECT * FROM contrat WHERE contrat_json @> CAST(json_build_object('nom', :nom) AS jsonb)
Pour 9.3 (et versions antérieures), il n'y a pas d'opérateur de confinement JSON (ni le jsonb type).
https://rextester.com/AUHP11519