[swift-users] Decode a JSON object of unknown format into a Dictionary with Decodable in Swift 4

Chris Anderson christopher.anderson at gmail.com
Sat Jun 17 21:07:26 CDT 2017


Say I have a JSON object such as:

  {
    "id": "4yq6txdpfadhbaqnwp3",
    "email": "john.doe at example.com",
    "name":"John Doe",
    "metadata": {
      "link_id": "linked-id",
      "buy_count": 4
    }
  }

And with a struct of:

struct User: Codable {
  var id: String
  var email: String
  var name: String
}

How can I decode the `metadata` field into a Dictionary?

I’ve tried doing things such as, in my struct,

var metadata: Dictionary

or

var metadata: [String: Any]

But I get the error 

MyPlayground.playground:3:7: note: cannot automatically synthesize 'Encodable' because '<<error type>>' does not conform to 'Encodable'
  var metadata: Dictionary 

A meta or metadata field on many APIs (such as www.stripe.com) can contain whatever you want, and I still want to be able to process it on the Swift end. How can I store that meta data field into a Dictionary that I can parse apart manually after?

Thanks!

Chris Anderson

	



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170617/77d45201/attachment.html>


More information about the swift-users mailing list