Marc Millas <marc.millas@xxxxxxxxxx> writes: > but it doesnt explain how postgres is able to put a scalar in a json or > jsonb column without pb: > I don't understand how this ('"{\"t\"}"') can be considered a valid enough > json to be inserted in a json column > and at the same time invalid for all other json uses. That's a bare string (it's not an object). That's valid JSON per RFC 7159: JSON can represent four primitive types (strings, numbers, booleans, and null) and two structured types (objects and arrays). ... A JSON text is a serialized value. Note that certain previous specifications of JSON constrained a JSON text to be an object or an array. However, there certainly are some operations that require the top-level value to be an object or array. regards, tom lane