If you want to skip lines with invalid JSON, you must first check if the text is valid JSON. You can do this by creating a function that will try to parse the value and catch an exception for invalid JSON values.
CREATE OR REPLACE FUNCTION is_json(input_text varchar) RETURNS boolean AS $$
DECLARE
maybe_json json;
BEGIN
BEGIN
maybe_json := input_text;
EXCEPTION WHEN others THEN
RETURN FALSE;
END;
RETURN TRUE;
END;
$$ LANGUAGE plpgsql IMMUTABLE;
, is_json CASE WHERE, .
SELECT user_data::json
FROM users WHERE is_json(user_data);
SELECT
CASE
WHEN is_json(user_data)
THEN user_data::json
ELSE
NULL
END
FROM users;