JsonDecode properly reverses JsonEncode values

JsonEncode was altered to treat numbers, booleans, and simple strings as
special cases. JsonDecode has now been updated in the same way.