{"action":"created","issue":{"url":"https://api.github.com/repos/emberjs/data/issues/53","labels_url":"https://api.github.com/repos/emberjs/data/issues/53/labels{/name}","comments_url":"https://api.github.com/repos/emberjs/data/issues/53/comments","events_url":"https://api.github.com/repos/emberjs/data/issues/53/events","html_url":"https://github.com/emberjs/data/issues/53","id":2890748,"number":53,"title":"Support nested JSON objects","user":{"login":"devinus","id":4836,"avatar_url":"https://avatars.githubusercontent.com/u/4836?v=3","gravatar_id":"","url":"https://api.github.com/users/devinus","html_url":"https://github.com/devinus","followers_url":"https://api.github.com/users/devinus/followers","following_url":"https://api.github.com/users/devinus/following{/other_user}","gists_url":"https://api.github.com/users/devinus/gists{/gist_id}","starred_url":"https://api.github.com/users/devinus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/devinus/subscriptions","organizations_url":"https://api.github.com/users/devinus/orgs","repos_url":"https://api.github.com/users/devinus/repos","events_url":"https://api.github.com/users/devinus/events{/privacy}","received_events_url":"https://api.github.com/users/devinus/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/emberjs/data/labels/attributes","name":"attributes","color":"DDDDDD"},{"url":"https://api.github.com/repos/emberjs/data/labels/improvement","name":"improvement","color":"207de5"}],"state":"closed","locked":false,"assignee":{"login":"wycats","id":4,"avatar_url":"https://avatars.githubusercontent.com/u/4?v=3","gravatar_id":"","url":"https://api.github.com/users/wycats","html_url":"https://github.com/wycats","followers_url":"https://api.github.com/users/wycats/followers","following_url":"https://api.github.com/users/wycats/following{/other_user}","gists_url":"https://api.github.com/users/wycats/gists{/gist_id}","starred_url":"https://api.github.com/users/wycats/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wycats/subscriptions","organizations_url":"https://api.github.com/users/wycats/orgs","repos_url":"https://api.github.com/users/wycats/repos","events_url":"https://api.github.com/users/wycats/events{/privacy}","received_events_url":"https://api.github.com/users/wycats/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/emberjs/data/milestones/1","labels_url":"https://api.github.com/repos/emberjs/data/milestones/1/labels","id":142574,"number":1,"title":"1.0 Beta","description":"","creator":{"login":"wagenet","id":9835,"avatar_url":"https://avatars.githubusercontent.com/u/9835?v=3","gravatar_id":"","url":"https://api.github.com/users/wagenet","html_url":"https://github.com/wagenet","followers_url":"https://api.github.com/users/wagenet/followers","following_url":"https://api.github.com/users/wagenet/following{/other_user}","gists_url":"https://api.github.com/users/wagenet/gists{/gist_id}","starred_url":"https://api.github.com/users/wagenet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wagenet/subscriptions","organizations_url":"https://api.github.com/users/wagenet/orgs","repos_url":"https://api.github.com/users/wagenet/repos","events_url":"https://api.github.com/users/wagenet/events{/privacy}","received_events_url":"https://api.github.com/users/wagenet/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":66,"state":"closed","created_at":"2012-07-09T15:47:38Z","updated_at":"2013-09-06T01:00:16Z","due_on":null,"closed_at":"2013-09-01T15:48:29Z"},"comments":88,"created_at":"2012-01-18T23:47:51Z","updated_at":"2015-01-02T15:07:18Z","closed_at":"2013-09-03T03:01:13Z","body":"E.g.:\r\n\r\n```json\r\n{\r\n  name: {\r\n    first: 'Devin',\r\n    last: 'Torres'\r\n  }\r\n}\r\n```\r\n\r\nThoughts:\r\n\r\n1. `name: DS.attr('object')`\r\n2. `firstName: DS.attr('string', { key: 'name.first' })`\r\n\r\nJustification:\r\n\r\nNested JSON objects are too prevalent to require transforming them every time they're used. Models should model the data, not some transformed representation you morph in adapter, and hopefully not through hundreds of transformers.\r\n"},"comment":{"url":"https://api.github.com/repos/emberjs/data/issues/comments/68532603","html_url":"https://github.com/emberjs/data/issues/53#issuecomment-68532603","issue_url":"https://api.github.com/repos/emberjs/data/issues/53","id":68532603,"user":{"login":"bmac","id":54056,"avatar_url":"https://avatars.githubusercontent.com/u/54056?v=3","gravatar_id":"","url":"https://api.github.com/users/bmac","html_url":"https://github.com/bmac","followers_url":"https://api.github.com/users/bmac/followers","following_url":"https://api.github.com/users/bmac/following{/other_user}","gists_url":"https://api.github.com/users/bmac/gists{/gist_id}","starred_url":"https://api.github.com/users/bmac/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmac/subscriptions","organizations_url":"https://api.github.com/users/bmac/orgs","repos_url":"https://api.github.com/users/bmac/repos","events_url":"https://api.github.com/users/bmac/events{/privacy}","received_events_url":"https://api.github.com/users/bmac/received_events","type":"User","site_admin":false},"created_at":"2015-01-02T15:07:18Z","updated_at":"2015-01-02T15:07:18Z","body":"@lolmaus Currently the best way to have an arbitrary JSON-like object as an attribute is use `DS.attr()` as suggested by @jasonkriss.\r\n> If you just want to have nested objects/arrays, you should be able to just declare the attribute as DS.attr(). This will pass the raw data through untouched. The catch is that dirty tracking will not work for that attribute."}}