{"id":2787,"date":"2017-04-05T13:01:53","date_gmt":"2017-04-05T07:31:53","guid":{"rendered":"https:\/\/www.innovationm.com\/blog\/?p=2787"},"modified":"2017-04-05T13:01:53","modified_gmt":"2017-04-05T07:31:53","slug":"jsonparserswift-parse-json-like-pro","status":"publish","type":"post","link":"https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/","title":{"rendered":"JSONParserSwift: Parse JSON like Pro!"},"content":{"rendered":"<p style=\"text-align: left;\"><strong>Parsing:<\/strong><\/p>\n<p style=\"text-align: left;\">Parsing is a process of converting data coming from server in any form like JSON, data, dictionary etc to your model class object. This task is complicated and time consuming because we have to traverse each and every data and convert it into an object manually. While parsing JSON \u00a0there may be\u00a0issues which arrive &amp; we need to handle because if we don&#8217;t, the application might be terminated or crashed. For example, NSNull object, typecasting of data,<\/p>\n<p style=\"text-align: left;\"><strong>Problem with manual parsing:<\/strong><\/p>\n<p style=\"text-align: left;\">There are some problems with manual parsing:<\/p>\n<ol>\n<li style=\"text-align: left;\">Manual parsing is complicated because for that we need to understand the hierarchy of data and parse it.<\/li>\n<li style=\"text-align: left;\">You\u00a0need to write a lengthy code for parsing.<\/li>\n<li style=\"text-align: left;\">You need to handle NSNull object. If You don&#8217;t, your application might crash.<\/li>\n<li style=\"text-align: left;\">This is a time consuming process.<\/li>\n<\/ol>\n<p>To avoid these problems and reduce efforts, here is a Library `<strong>JSONParserSwift<\/strong>` which can handle all the scenarios automatically.<\/p>\n<p style=\"text-align: left;\"><strong>JSONParserSwift:<\/strong><\/p>\n<p style=\"text-align: left;\">This library used to parse the data into model object. You just need to make a model class and declare your variable in which you want to receive data and subclass it to\u00a0`<strong>ParsableModel<\/strong>`. You need \u00a0not to write extra lines to parse your data. Now you just need to call a method and pass your data into it. This method will return you the object of your Model class.<\/p>\n<p>Mainly this library is used for three tasks:<\/p>\n<ol style=\"text-align: left;\">\n<li>Marshalling of\u00a0the data ( JSON\u00a0string, Data, Dictionary or Array to object)<\/li>\n<li>Reverse Marshalling of object (object to JSON)<\/li>\n<li>Defining custom keys for Parsable model<\/li>\n<\/ol>\n<p style=\"text-align: left;\"><strong>1.Data Parsing (JSON to object):\u00a0<\/strong><\/p>\n<p style=\"text-align: left;\">This library is used to parse data from one JSON\u00a0string\/ data\/ dictionary to `<strong>ParsableModel<\/strong>` or array of\u00a0`<strong>ParsableModel<\/strong>`. Some conversion types are define here:<\/p>\n<ol style=\"text-align: left;\">\n<li><strong>JSON string to Parsable\u00a0Model:<\/strong> You can convert your JSON String to any Parsable model object.<br \/>\nHere is the JSON String:<\/p>\n<pre class=\"lang:default decode:true \">{\r\n  \"responseStatus\": {\r\n    \"statusCode\": 101,\r\n    \"message\": \"Error Message\"\r\n  },\r\n  \"responseData\": {\r\n    \"employeeId\": 1002,\r\n    \"employeeName\": \"Demo Employee\",\r\n    \"employeeEmail\": \"abc@def.com\",\r\n    \"employeeDepartment\": \"IT\"\r\n  }\r\n}<\/pre>\n<p>Model For JSON String:<\/p>\n<pre class=\"lang:swift decode:true \">class BaseResponse: ParsableModel {\r\n\u00a0 var responseStatus: ResponseStatus?\r\n\u00a0 var responseData: Employee?\r\n}\r\n\r\nclass ResponseStatus: ParsableModel {\r\n\u00a0 var statusCode: NSNumber?\r\n\u00a0 var message: String?\r\n}\r\n\r\nclass Employee: ParsableModel {\r\n\u00a0 var employeeId: NSNumber?\r\n\u00a0 var employeeName: String?\r\n\u00a0 var employeeEmail: String?\r\n\u00a0 var employeeDepartment: String?\r\n}<\/pre>\n<p>Method calling for this model:<\/p>\n<pre class=\"lang:swift decode:true\">do {\r\n  let jsonString = \"given above\"\r\n  let responseModel: BaseResponse = try JSONParserSwift.parse(string: jsonString)\r\n  print(responseModel)\r\n} catch {\r\n  print(error)\r\n}<\/pre>\n<\/li>\n<li><strong>JSON String to\u00a0Array of numbers \/ String \/ Parsable model:<br \/>\n<\/strong>You can convert the JSON String in an Array of any type. For ex:<br \/>\nJSON String:<\/p>\n<pre class=\"lang:default decode:true\">[\r\n    {\r\n        \"howtoUseUrl\": \"\",\r\n        \"iconUrl\": \"listening\/listening_understand_format.png\",\r\n        \"objective\": \"Check out some examples of the different types of questions you can expect to see in the listening test\",\r\n        \"topicDescriptionUrl\": \"content\/listening\/listening_understanding_format.html\",\r\n        \"topicId\": 1,\r\n        \"topicName\": \"Understand the test format\"\r\n    },\r\n    {\r\n        \"howtoUseUrl\": \"\",\r\n        \"iconUrl\": \"listening\/topics_marking.png\",\r\n        \"objective\": \"Understand how the test is marked and what topics might come up\",\r\n        \"topicDescriptionUrl\": \"content\/listening\/listening_topics_marking.html\",\r\n        \"topicId\": 2,\r\n        \"topicName\": \"Topics and marking\"\r\n    },\r\n    {\r\n        \"howtoUseUrl\": \"\",\r\n        \"iconUrl\": \"listening\/answering_technique.png\",\r\n        \"objective\": \"Tips and tricks to help you perform at your best\",\r\n        \"topicDescriptionUrl\": \"content\/listening\/listening_answering_techniques.html\",\r\n        \"topicId\": 3,\r\n        \"topicName\": \"Answering techniques\"\r\n    },\r\n    {\r\n        \"howtoUseUrl\": \"&lt;null&gt;\",\r\n        \"iconUrl\": \"listening\/take_a_quiz.png\",\r\n        \"objective\": \"Prepare yourself better by taking a quiz\",\r\n        \"topicDescriptionUrl\": \"&lt;null&gt;\",\r\n        \"topicId\": 65,\r\n        \"topicName\": \"Take a quiz\"\r\n    }\r\n]<\/pre>\n<p>ParsableModel:<\/p>\n<pre class=\"lang:swift decode:true\">class ListItemModel: ParsableModel  {\r\n    \r\n    var topicName: String?\r\n    var objective: String?\r\n    var topicId: NSNumber?\r\n    var iconUrl: String?\r\n    var topicDescriptionUrl: String?\r\n    var howToUseUrl: String?\r\n}<\/pre>\n<p>Method to call:<\/p>\n<pre class=\"lang:swift decode:true\">do {\r\n  let jsonString = \"given above\"\r\n  let responseModel: [ListItemModel] = try JSONParserSwift.parse(string: jsonString)\r\n  print(responseModel)\r\n} catch {\r\n  print(error)\r\n}<\/pre>\n<\/li>\n<li><strong>Data to Parsable model:<br \/>\n<\/strong>You can parse Data object in parsable model. To do that make your Model and call the method given below:<\/p>\n<pre class=\"lang:swift decode:true\">do {\r\n  let data: Data = \/\/ Your Data Object\r\n  let responseModel: BaseResponse = try JSONParserSwift.parse(data: data)\r\n  print(responseModel)\r\n} catch {\r\n  print(error)\r\n}<\/pre>\n<\/li>\n<li><strong>Data to Array of\u00a0numbers \/ String \/ Parsable model:<br \/>\n<\/strong>You can convert your data into array. To do that call a single method and define its type as array as given below:<\/p>\n<pre class=\"lang:swift decode:true\">do {\r\n  let data: Data = \/\/ Your Data Object\r\n  let responseModel: [ListItemModel] = try JSONParserSwift.parse(data: data)\r\n  print(responseModel)\r\n} catch {\r\n  print(error)\r\n}<\/pre>\n<\/li>\n<li><strong>Dictionary to Parsable model:<br \/>\n<\/strong>You can also convert a dictionary into Parsable model object. For example:<br \/>\nDictionary:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n   howtoUseUrl = \"\";\r\n   iconUrl = \"listening\/topics_marking.png\";\r\n   objective = \"Understand how the test is marked and what topics might come up\";\r\n   topicDescriptionUrl = \"content\/listening\/listening_topics_marking.html\";\r\n   topicId = 2;\r\n   topicName = \"Topics and marking\";\r\n}<\/pre>\n<p>Model for this dictionary\u00a0is given above. To convert it into ParsableModel Object call given method:<\/p>\n<pre class=\"lang:swift decode:true\">let dict = \/\/ Your Dictionary object \r\nlet responseModel: ListItemModel = JSONParserSwift.parse(dictionary: dictionary) \r\nprint(responseModel)<\/pre>\n<\/li>\n<li><strong>Array of Dictionary to array of numbers \/ String \/ Parsable model:<br \/>\n<\/strong>It also returns the array of parsable model from Array of Dictionary.<\/p>\n<pre class=\"lang:swift decode:true\">do {\r\n  let array = \/\/ Your Array of Dictionary object\r\n  let responseModel: [ListItemModel] = try JSONParserSwift.parse(array: array)\r\n  print(responseModel)\r\n} catch {\r\n  print(error)\r\n}<\/pre>\n<\/li>\n<\/ol>\n<p style=\"text-align: left;\">All methods which can be used to parsing:<\/p>\n<pre class=\"lang:default decode:true\">do {\r\n  \/\/json string to parsable model\r\n  let userInfo: UserInfoModel = try JSONParserSwift.parse(string: json)\r\n\r\n  \/\/json string to array of parsable model\r\n  let userInfo: [UserInfoModel] = try JSONParserSwift.parse(string: json)\r\n\r\n  \/\/data to parsable model\r\n  let userInfo: UserInfoModel = try JSONParserSwift.parse(data: data)\r\n\r\n  \/\/data to array of parsable model\r\n  let userInfo: [UserInfoModel] = try JSONParserSwift.parse(data: data)\r\n\r\n  \/\/dictionary to parsable model\r\n  let userInfo: UserInfoModel = JSONParserSwift.parse(dictionary: dictionary)\r\n\r\n  \/\/array to array of parsable model\r\n  let userInfo: [UserInfoModel] = try JSONParserSwift.parse(array: array)\r\n\r\n} catch {\r\n  print(error)\r\n}<\/pre>\n<p style=\"text-align: left;\">Here you just need to define the type of variable to let the parser know the Model class to make an object of that class.<\/p>\n<p style=\"text-align: left;\"><strong>2. Reverse Marshalling (Object to JSON):\u00a0<\/strong><\/p>\n<p style=\"text-align: left;\">Reverse marshalling means converting the object of model class into JSON string. You need to call a single static method `<strong>getJSON:<\/strong>`. We can convert an object into following things:<\/p>\n<ol style=\"text-align: left;\">\n<li><strong>Object to JSON String:<br \/>\n<\/strong>To convert the object into JSON String call method ` <strong>getJSON(object:) \u00a0<\/strong>` as given below:<br \/>\nModel Class:<\/p>\n<pre class=\"lang:default decode:true\">class TestModel {\r\n\r\n    var test: String?\r\n    var number: Double = 0\r\n    var boolValue: Bool = false\r\n    var anotherTest: TestModel?\r\n    var array: [TestModel]?\r\n}<\/pre>\n<p>Converting Model object to JSON String:<\/p>\n<pre class=\"lang:swift decode:true\">\/\/ Prepare Test Model\r\nlet testModel: TestModel = TestModel()\r\ntestModel.test = \"xyz\"\r\ntestModel.number = 10.0\r\ntestModel.boolValue = true\r\n    \r\nlet anotherTestModel = TestModel()\r\nanotherTestModel.test = \"abc\"\r\nanotherTestModel.number = 23\r\nanotherTestModel.boolValue = false\r\n    \r\ntestModel.anotherTest = anotherTestModel\r\ntestModel.array = [anotherTestModel]\r\n\r\ndo {\r\n    \/\/ Convert into json string\r\n    let jsonString = try JSONParserSwift.getJSON(object: testModel)\r\n    print(\"Json String : \\(jsonString)\")\r\n} catch {\r\n    print(error)\r\n}<\/pre>\n<p>The JSON String\u00a0will be:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n  \"boolValue\":true,\r\n  \"number\":10,\r\n  \"test\":\"xyz\",\r\n  \"array\":[\r\n    {\r\n      \"boolValue\":false,\r\n      \"number\":23,\r\n      \"test\":\"abc\",\r\n      \"array\": null,\r\n      \"anotherKey\": null\r\n    }\r\n  ],\r\n  \"anotherKey\": {\r\n    \"boolValue\":false,\r\n    \"number\":23,\r\n    \"test\":\"abc\",\r\n    \"array\": null,\r\n    \"anotherKey\": null\r\n  }\r\n }<\/pre>\n<p>&nbsp;<\/li>\n<li><strong>Object to Dictionary:<br \/>\n<\/strong>You can also convert your object in dictionary. For that use Given object ` testModel `:<\/p>\n<pre class=\"lang:swift decode:true\">let jsonString = JSONParserSwift.getDictionary(object: testModel)\r\nprint(\"Json String : \\(jsonString)\")<\/pre>\n<\/li>\n<li><strong>Object to Array:<br \/>\n<\/strong>It converts the Array of any object to array of dictionary:<\/p>\n<pre class=\"lang:swift decode:true\">let jsonString = try JSONParserSwift.getDictionary(object: testModel)\r\nprint(\"Json String : \\(jsonString)\")<\/pre>\n<\/li>\n<\/ol>\n<p style=\"text-align: left;\"><strong>3. Custom Keys For JSON:<\/strong><\/p>\n<p style=\"text-align: left;\">To use the given library, declare the property name same as the keys given in your JSON String\u00a0or data. By defining the properties with same name helps to map the keys with properties of class.<\/p>\n<p style=\"text-align: left;\">But if you don&#8217;t want to declare these keys with same name then you need to conform the protocol `<strong>JSONKeyCoder<\/strong>`. This protocol provides you a method<br \/>\n`<span class=\"s1\">func<\/span><span class=\"s2\"> key(for key: <\/span><span class=\"s3\">String<\/span><span class=\"s2\">) -&gt; <\/span><span class=\"s3\">String<\/span><span class=\"s2\">?<\/span>`.<\/p>\n<p style=\"text-align: left;\">You need to implement this method and pass your property name and JSON key in this method as given below:<\/p>\n<pre class=\"unchanged rich-diff-level-one \">class TestModel: ParsableModel, JSONKeyCoder {\r\n\r\n  var test: String?\r\n  var number: Double = 0\r\n  var boolValue: Bool = false\r\n  var anotherTest: TestModel?\r\n  var array: [TestModel]?\r\n \r\n  public func key(for key: String) -&gt; String? {\r\n    switch key {\r\n    case \"boolValue\": \/\/ Properties name\r\n      return \"bool_value\" \/\/ Key in response\r\n    case \"anotherTest\":\r\n      return \"another_key\"\r\n    default:\r\n      return nil\r\n    }\r\n  }\r\n}<\/pre>\n<p style=\"text-align: left;\">JSON String for given Model:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n  \"bool_value\":true,\r\n  \"number\":10,\r\n  \"test\":\"xyz\",\r\n  \"array\":[\r\n    {\r\n      \"bool_value\":false,\r\n      \"number\":23,\r\n      \"test\":\"abc\",\r\n      \"array\": null,\r\n      \"another_key\": null\r\n    }\r\n  ],\r\n  \"another_key\": {\r\n    \"bool_value\":false,\r\n    \"number\":23,\r\n    \"test\":\"abc\",\r\n    \"array\": null,\r\n    \"another_key\": null\r\n  }\r\n }<\/pre>\n<p style=\"text-align: left;\">In `case`, \u00a0pass your property name as string and return your JSON key.<br \/>\nUsing this protocol you can declare properties with different names.<\/p>\n<p style=\"text-align: left;\"><strong>Steps To use JSONParserSwift:<\/strong><\/p>\n<p style=\"text-align: left;\">You can use this Library with following some easy steps:<\/p>\n<ol style=\"text-align: left;\">\n<li>Create a project on Xcode.<\/li>\n<li>Create `pod` File for your project using command<br \/>\n`pod init`<\/li>\n<li>Open pod file in editor and add \u00a0&#8221; `pod &#8216;JSONParserSwift&#8217;` &#8220;<\/li>\n<li>Install Pod file using `pod install`<\/li>\n<li>Open workspace of your project<\/li>\n<li>import `JSONParserSwift` in your class.<\/li>\n<li>Create a model class and confirm it with `ParsableModel`<\/li>\n<\/ol>\n<p style=\"text-align: left;\"><strong>Note:<\/strong> Currently this version do not support Optional with Int and Array of Optional types. So prefer to use NSNumber for number related data.<\/p>\n<p style=\"text-align: left;\">For more information follow these links:<\/p>\n<div dir=\"auto\">Github:\u00a0<a href=\"https:\/\/github.com\/mukeshydv\/JSONParserSwift\" target=\"_blank\">https:\/\/github.com\/mukeshydv\/JSONParserSwift<\/a><\/div>\n<div dir=\"auto\"><\/div>\n<div dir=\"auto\">Cocoapods:\u00a0<a href=\"http:\/\/cocoapods.org\/pods\/JSONParserSwift\" target=\"_blank\">http:\/\/cocoapods.org\/pods\/JSONParserSwift<\/a><\/div>\n<div dir=\"auto\"><\/div>\n<div dir=\"auto\">Framework Reference Docs:\u00a0<a href=\"http:\/\/cocoadocs.org\/docsets\/JSONParserSwift\" target=\"_blank\">http:\/\/cocoadocs.org\/docsets\/JSONParserSwift<\/a><\/div>\n<div dir=\"auto\"><\/div>\n<p style=\"text-align: left;\">Your project is ready to use` JSONParserSwift`. Enjoy parsing without efforts and save your time \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Parsing: Parsing is a process of converting data coming from server in any form like JSON, data, dictionary etc to your model class object. This task is complicated and time consuming because we have to traverse each and every data and convert it into an object manually. While parsing JSON \u00a0there may be\u00a0issues which arrive [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2993,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[71],"tags":[197,160,89,186,187,183,178],"class_list":["post-2787","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobile","tag-framework","tag-ios","tag-iphone","tag-json","tag-json-parser","tag-swift","tag-swift-3-0"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JSONParserSwift: Parse JSON like Pro! | InnovationM Blog<\/title>\n<meta name=\"description\" content=\"JSONParserSwift is a framework to parse JOSN into Swift objects.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JSONParserSwift: Parse JSON like Pro! | InnovationM Blog\" \/>\n<meta property=\"og:description\" content=\"JSONParserSwift is a framework to parse JOSN into Swift objects.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/\" \/>\n<meta property=\"og:site_name\" content=\"InnovationM - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-04-05T07:31:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2017\/03\/JSON-Parser-Swift-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"624\" \/>\n\t<meta property=\"og:image:height\" content=\"347\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"InnovationM Admin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"InnovationM Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jsonparserswift-parse-json-like-pro\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jsonparserswift-parse-json-like-pro\\\/\"},\"author\":{\"name\":\"InnovationM Admin\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"headline\":\"JSONParserSwift: Parse JSON like Pro!\",\"datePublished\":\"2017-04-05T07:31:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jsonparserswift-parse-json-like-pro\\\/\"},\"wordCount\":846,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jsonparserswift-parse-json-like-pro\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/03\\\/JSON-Parser-Swift-1.png\",\"keywords\":[\"Framework\",\"iOS\",\"iPhone\",\"json\",\"json parser\",\"Swift\",\"Swift 3.0\"],\"articleSection\":[\"Mobile\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jsonparserswift-parse-json-like-pro\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jsonparserswift-parse-json-like-pro\\\/\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jsonparserswift-parse-json-like-pro\\\/\",\"name\":\"JSONParserSwift: Parse JSON like Pro! | InnovationM Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jsonparserswift-parse-json-like-pro\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jsonparserswift-parse-json-like-pro\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/03\\\/JSON-Parser-Swift-1.png\",\"datePublished\":\"2017-04-05T07:31:53+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"description\":\"JSONParserSwift is a framework to parse JOSN into Swift objects.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jsonparserswift-parse-json-like-pro\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jsonparserswift-parse-json-like-pro\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jsonparserswift-parse-json-like-pro\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/03\\\/JSON-Parser-Swift-1.png\",\"contentUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/03\\\/JSON-Parser-Swift-1.png\",\"width\":624,\"height\":347},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jsonparserswift-parse-json-like-pro\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JSONParserSwift: Parse JSON like Pro!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\",\"name\":\"InnovationM - Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\",\"name\":\"InnovationM Admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"caption\":\"InnovationM Admin\"},\"sameAs\":[\"http:\\\/\\\/www.innovationm.com\\\/\"],\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/author\\\/innovationmadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JSONParserSwift: Parse JSON like Pro! | InnovationM Blog","description":"JSONParserSwift is a framework to parse JOSN into Swift objects.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/","og_locale":"en_US","og_type":"article","og_title":"JSONParserSwift: Parse JSON like Pro! | InnovationM Blog","og_description":"JSONParserSwift is a framework to parse JOSN into Swift objects.","og_url":"https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/","og_site_name":"InnovationM - Blog","article_published_time":"2017-04-05T07:31:53+00:00","og_image":[{"width":624,"height":347,"url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2017\/03\/JSON-Parser-Swift-1.png","type":"image\/png"}],"author":"InnovationM Admin","twitter_misc":{"Written by":"InnovationM Admin","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/#article","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/"},"author":{"name":"InnovationM Admin","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"headline":"JSONParserSwift: Parse JSON like Pro!","datePublished":"2017-04-05T07:31:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/"},"wordCount":846,"commentCount":0,"image":{"@id":"https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2017\/03\/JSON-Parser-Swift-1.png","keywords":["Framework","iOS","iPhone","json","json parser","Swift","Swift 3.0"],"articleSection":["Mobile"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/","url":"https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/","name":"JSONParserSwift: Parse JSON like Pro! | InnovationM Blog","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/#primaryimage"},"image":{"@id":"https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2017\/03\/JSON-Parser-Swift-1.png","datePublished":"2017-04-05T07:31:53+00:00","author":{"@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"description":"JSONParserSwift is a framework to parse JOSN into Swift objects.","breadcrumb":{"@id":"https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/#primaryimage","url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2017\/03\/JSON-Parser-Swift-1.png","contentUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2017\/03\/JSON-Parser-Swift-1.png","width":624,"height":347},{"@type":"BreadcrumbList","@id":"https:\/\/www.innovationm.com\/blog\/jsonparserswift-parse-json-like-pro\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.innovationm.com\/blog\/"},{"@type":"ListItem","position":2,"name":"JSONParserSwift: Parse JSON like Pro!"}]},{"@type":"WebSite","@id":"https:\/\/www.innovationm.com\/blog\/#website","url":"https:\/\/www.innovationm.com\/blog\/","name":"InnovationM - Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.innovationm.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed","name":"InnovationM Admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","caption":"InnovationM Admin"},"sameAs":["http:\/\/www.innovationm.com\/"],"url":"https:\/\/www.innovationm.com\/blog\/author\/innovationmadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/2787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/comments?post=2787"}],"version-history":[{"count":0,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/2787\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media\/2993"}],"wp:attachment":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media?parent=2787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/categories?post=2787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/tags?post=2787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}