With the key serialisation ... all `TYPE_WHITELIST` can be used as keys. The issues will appear when using keys that are equal when `to_s`ed.
```ruby
[17] pry(main)> {1=>false, "1"=>true}
=> {1=>false, "1"=>true}
[18] pry(main)> {1=>false, "1"=>true}.with_indifferent_access
=> {1=>false, "1"=>true}
[19] pry(main)> {1=>false, "1"=>true}.to_json
=> "{\"1\":true}"
[20] pry(main)> {a: true, "a" => true}
=> {:a=>true, "a"=>true}
[21] pry(main)> {a: true, "a" => true}.with_indifferent_access
=> {"a"=>true}
[22] pry(main)> {a: true, "a" => true}.to_json
=> "{\"a\":true}"
```

I think we should allow all `TYPE_WHITELIST`and convert everything `to_s`. If you are going to use `1` and `'1'` (and maybe `:'1'` :P) AJ serialization will probably be the least of your problems :)