Attached is a very simple patch which brings back the ability to define JSON rules externally using generic functions. Rather than being based upon PEAK-Rules, this code is based upon the much more documented and easy_installable simplegeneric, which at one point was considered for inclusion in the standard library. Unlike PEAK-Rules, simplegeneric only allows you to define very simple rules based upon types, rather than arbitrary rules with multiple conditions.
As you'll notice, the patch doesn't force people to install simplegeneric or use generic functions if they do not want to. The code falls back to the old behavior based upon the presence of simplegeneric.