Except I have to define the table with money so that json_populate_record uses the correct cast. But yes, when actually using the data, or if I decide to make a view on top of the table, I can cast from money to numeric.
I guess I could define a custom type using money and then define the table using numeric and transform in between; but its yet another definition to keep in sync.
Money perfectly meets my current need and no longer has my scorn.