So my vote is for a separate function and no optional arguments.
You mean like row_to_json_no_nulls() and json_agg_no_nulls()?
I thought you were proposing that we should revert the committed patch lock-stock-n-barrel, and instead invent json_strip_null_fields(). That's instead, not in addition to. Even if you weren't saying that exactly, that's where my vote goes.
I was just exploring alternatives. But I think that's where my vote goes too.
I'm fine with that. I'd like the strip-Nulls capability, but seems like it'd be better off as an independent function (or functions) instead.
Unlike the row_to_json stuff, json{b}_strip_null_fields() can almost certainly be done as a small extension. One advantage of that is that it would be used with 9.4.
In other mail you wrote, how much important is this functionality for JSON, so I don't think so a movement to contrib is a good idea.
We can implement all described functionality in separate function, but it should be in core probably. It is not my idea. I was asked about this functionality by some PostgreSQL 9.4 early users and testers on Czech mailing list.