{"action":"created","issue":{"url":"https://api.github.com/repos/bos/aeson/issues/341","labels_url":"https://api.github.com/repos/bos/aeson/issues/341/labels{/name}","comments_url":"https://api.github.com/repos/bos/aeson/issues/341/comments","events_url":"https://api.github.com/repos/bos/aeson/issues/341/events","html_url":"https://github.com/bos/aeson/pull/341","id":128109396,"number":341,"title":"Even more general map serialising","user":{"login":"phadej","id":51087,"avatar_url":"https://avatars.githubusercontent.com/u/51087?v=3","gravatar_id":"","url":"https://api.github.com/users/phadej","html_url":"https://github.com/phadej","followers_url":"https://api.github.com/users/phadej/followers","following_url":"https://api.github.com/users/phadej/following{/other_user}","gists_url":"https://api.github.com/users/phadej/gists{/gist_id}","starred_url":"https://api.github.com/users/phadej/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phadej/subscriptions","organizations_url":"https://api.github.com/users/phadej/orgs","repos_url":"https://api.github.com/users/phadej/repos","events_url":"https://api.github.com/users/phadej/events{/privacy}","received_events_url":"https://api.github.com/users/phadej/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2016-01-22T08:44:33Z","updated_at":"2016-01-31T12:14:33Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/bos/aeson/pulls/341","html_url":"https://github.com/bos/aeson/pull/341","diff_url":"https://github.com/bos/aeson/pull/341.diff","patch_url":"https://github.com/bos/aeson/pull/341.patch"},"body":"More general version of https://github.com/bos/aeson/pull/339\r\n\r\n<img width=\"475\" alt=\"screen shot 2016-01-22 at 10 38 26\" src=\"https://cloud.githubusercontent.com/assets/51087/12506091/0d9056b4-c0f5-11e5-89a0-1c7268796a03.png\">\r\n<img width=\"733\" alt=\"screen shot 2016-01-22 at 10 38 47\" src=\"https://cloud.githubusercontent.com/assets/51087/12506092/0eb49fdc-c0f5-11e5-92fa-5749a7cbcefe.png\">\r\n\r\nI'd prefer this one. Will write more instances & documentation if the approach is otherwise ok"},"comment":{"url":"https://api.github.com/repos/bos/aeson/issues/comments/177485295","html_url":"https://github.com/bos/aeson/pull/341#issuecomment-177485295","issue_url":"https://api.github.com/repos/bos/aeson/issues/341","id":177485295,"user":{"login":"bergmark","id":100681,"avatar_url":"https://avatars.githubusercontent.com/u/100681?v=3","gravatar_id":"","url":"https://api.github.com/users/bergmark","html_url":"https://github.com/bergmark","followers_url":"https://api.github.com/users/bergmark/followers","following_url":"https://api.github.com/users/bergmark/following{/other_user}","gists_url":"https://api.github.com/users/bergmark/gists{/gist_id}","starred_url":"https://api.github.com/users/bergmark/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bergmark/subscriptions","organizations_url":"https://api.github.com/users/bergmark/orgs","repos_url":"https://api.github.com/users/bergmark/repos","events_url":"https://api.github.com/users/bergmark/events{/privacy}","received_events_url":"https://api.github.com/users/bergmark/received_events","type":"User","site_admin":false},"created_at":"2016-01-31T12:14:33Z","updated_at":"2016-01-31T12:14:33Z","body":"I see the benefits of generalizing key handling, I've wanted it multiple times myself (we even have our own [package](https://hackage.haskell.org/package/rest-stringmap) for it!)\r\n\r\n* Will this make type errors harder to understand for unsupported keys,  e.g. if I try a map with `ByteString` keys?\r\n* What happens with existing monomorphic instances,, e.g. `ToJSON (HashMap (CI String) x)`, will they need to be marked `OVERLAPPING`? I can imagine there are a lot of these in the wild and I'd like to be able to give a migration path that's as simple as possible, even if the better migration might be to add instances for the new type classes.\r\n* Since (AFAICT) this is a breaking change I'm a bit wary of merging it for the 0.11 release since 0.11 will mostly be steps back to be compatible with 0.9. I'd lean towards putting this in a 0.12 release some time later after 0.11 has been widely adopted.\r\n\r\n\r\n"}}