Parameterhalter werden innerhalb von Literalen nicht verstanden:'...:nom...' enthält die Zeichen :nom , nicht die gebundenen Werte von nom .
Verwenden Sie für PostgreSQL 9.5 (und höher):
SELECT * FROM contrat WHERE contrat_json @> jsonb_build_object('nom', :nom)
Für 9.4:
SELECT * FROM contrat WHERE contrat_json @> CAST(json_build_object('nom', :nom) AS jsonb)
Für 9.3 (und früher) gibt es keinen JSON-Containment-Operator (weder den jsonb Typ).
https://rextester.com/AUHP11519