{"id":298,"date":"2016-01-11T16:50:48","date_gmt":"2016-01-11T16:50:48","guid":{"rendered":"http:\/\/zappysys.com\/blog\/?p=298"},"modified":"2024-12-11T15:24:27","modified_gmt":"2024-12-11T15:24:27","slug":"extract-read-multiple-arrays-from-json-data-file-rest-api-response","status":"publish","type":"post","link":"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/","title":{"rendered":"Reading JSON Arrays from file \/ REST API"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/SSIS-Json-Source-Adapter.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3074 alignleft\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/SSIS-Json-Source-Adapter.png\" alt=\"\" width=\"100\" height=\"100\" \/><\/a><a href=\"https:\/\/en.wikipedia.org\/wiki\/Representational_state_transfer\" target=\"_blank\" rel=\"noopener\">REST API<\/a> is becoming more and more common and with that you will see explosion in use of JSON data format. One of the questions we get a lot is &#8220;<em>How to extract or read array from JSON data file<\/em>&#8221; or &#8220;<em>How to read multiple arrays from JSON data<\/em>&#8220;. Example : Store JSON document has Customers[&#8230;] and Employees[&#8230;] arrays and lets say you want to extract both and save to target SQL server database. In this post you will learn how to make this possible and how to make it fast with some performance tips.\u00a0We will use <a href=\"\/\/zappysys.com\/products\/ssis-powerpack\/ssis-json-file-source\/\">SSIS JSON Source (File, REST API Connector)<\/a><\/p>\n<p>If you want to learn how to parse Multi-Dimensional JSON arrays then check <a href=\"\/\/zappysys.com\/blog\/parse-multi-dimensional-json-array-ssis\/\" target=\"_blank\" rel=\"noopener\">this article<\/a>.<\/p>\n<h2>Video Tutorial &#8211; Read from multiple arrays from JSON document<\/h2>\n<div class=\"lyte-wrapper fourthree\" style=\"width:480px;max-width:100%;margin:5px auto;\"><div class=\"lyMe\" id=\"WYL_Ot7z8BIFbis\"><div id=\"lyte_Ot7z8BIFbis\" data-src=\"https:\/\/zappysys.com\/blog\/wp-content\/plugins\/wp-youtube-lyte\/lyteCache.php?origThumbUrl=%2F%2Fi.ytimg.com%2Fvi%2FOt7z8BIFbis%2Fhqdefault.jpg\" class=\"pL\"><div class=\"tC\"><div class=\"tT\"><\/div><\/div><div class=\"play\"><\/div><div class=\"ctrl\"><div class=\"Lctrl\"><\/div><div class=\"Rctrl\"><\/div><\/div><\/div><noscript><a href=\"https:\/\/youtu.be\/Ot7z8BIFbis\" rel=\"nofollow\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/plugins\/wp-youtube-lyte\/lyteCache.php?origThumbUrl=https%3A%2F%2Fi.ytimg.com%2Fvi%2FOt7z8BIFbis%2F0.jpg\" alt=\"\" width=\"480\" height=\"340\" \/><br \/>Watch this video on YouTube<\/a><\/noscript><\/div><\/div><div class=\"lL\" style=\"max-width:100%;width:480px;margin:5px auto;\"><\/div><\/p>\n<h2>Read array from JSON document<\/h2>\n<p>To extract subdocument or array content from JSON document you need to use <strong>JSON Path<\/strong> expression. Lets check following example JSON document.<\/p>\n<pre class=\"lang:js decode:true\">{\r\n  \"store\": {\r\n    \"employees\": [\r\n      {\r\n        \"name\": \"bob\",\r\n        \"hiredate\": \"2015-01-01\"\r\n      },\r\n      {\r\n        \"name\": \"sam\",\r\n        \"hiredate\": \"2015-01-02\"\r\n      },\r\n      {\r\n        \"name\": \"ken\",\r\n        \"hiredate\": \"2015-01-03\"\r\n      }\r\n    ],\r\n    \"books\": [\r\n      {\r\n        \"category\": \"reference\",\r\n        \"author\": \"bob\",\r\n        \"title\": \"hellooo1\",\r\n        \"price\": 1.95,\r\n        \"sections\": [\r\n          \"s1\",\r\n          \"s2\",\r\n          \"s3\"\r\n        ]\r\n      },\r\n      {\r\n        \"category\": \"fiction\",\r\n        \"author\": \"sam\",\r\n        \"title\": \"hellooo2\",\r\n        \"price\": 1.96,\r\n        \"sections\": [\r\n          \"s4\",\r\n          \"s1\",\r\n          \"s3\"\r\n        ]\r\n      },\r\n      {\r\n        \"category\": \"science\",\r\n        \"author\": \"steve\",\r\n        \"title\": \"hellooo3\",\r\n        \"tag\": \"1bcd\",\r\n        \"price\": 11,\r\n        \"sections\": [\r\n          \"s9\",\r\n          \"s2\",\r\n          \"s3\"\r\n        ]\r\n      }\r\n    ],\r\n    \"location\": {\r\n      \"street\": \"123 Main St.\",\r\n      \"city\": \"Newyork\",\r\n      \"state\": \"GA\"\r\n    }\r\n  }\r\n}<\/pre>\n<p>Below is example filter expression to extract common elements<\/p>\n<pre class=\"lang:c# decode:true\">$.store.books[*]       \/\/get all books for store              \r\n$.store.employees[*]       \/\/get all employees for store                 \r\n$.store.books[*].sections[*]       \/\/get all sections from all books   \r\n$.store.books[*].author \/\/get all authors of all books for store           \r\n$.store.books[*]    \/\/get all books for store  \r\n$.store.books[2]    \/\/get 3rd book record\r\n$.store.books[:2]   \/\/get first 2 books from the top\r\n$.store.books[-2:]  \/\/get last 2 books\r\n$.store.books[?(@.price &lt; 10)] \/\/get books where price is less than 10\r\n$.store.books[?(@.tag)] \/\/filter all books with tag<\/pre>\n<h2>Read single array from JSON data (JSON Path expression)<\/h2>\n<p>SSIS PowerPack comes with powerful REST API Connectors for <a href=\"\/\/zappysys.com\/products\/ssis-powerpack\/ssis-json-file-source\/\">JSON<\/a> and <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/ssis-xml-source\/\">XML <\/a> . In below\u00a0example screenshot you will see how to extract single array section from your JSON File. But if you have multiple array sections (e.g. books and employees from above example)\u00a0then you have to use Multiple JSON Source Connectors\u00a0for same JSON File.<\/p>\n<p><img decoding=\"async\" src=\"\/\/zappysys.com\/onlinehelp\/ssis-powerpack\/scr\/images\/json-source\/ssis-json-source-data-read-from-file-url.png\" alt=\"Read Json File data from Web Url Example in SSIS\" \/><\/p>\n<h2>Read multiple arrays from JSON data<\/h2>\n<p>If you have scenario to extract multiple arrays from same JSON (e.g. extract Employees and Books from store ) then you have two\u00a0options. You can pick any approach which suites your need (Method-1 is recommended).<\/p>\n<ol>\n<li>Method-1: Use single JSON Source with [Output As Document] option and feed that to <a href=\"\/\/zappysys.com\/products\/ssis-powerpack\/ssis-json-parser-transform\/\" target=\"_blank\" rel=\"noopener\">JSON Parser Transform<\/a><\/li>\n<li>Method-2: Use multiple JSON Sources with different filter expressions<\/li>\n<li>Method-3: Enable <strong>Array Flattening<\/strong> Option (Useful if you have smaller arrays &#8211; i.e. less than 10 items) &#8211; <strong>Version v2.7.6+<\/strong><\/li>\n<\/ol>\n<p>Now lets discuss each approach in detail.<\/p>\n<h3>Method-1: Use single JSON Source along with JSON Parser Transform<\/h3>\n<p><a href=\"\/\/zappysys.com\/onlinehelp\/ssis-powerpack\/scr\/release-notes.htm#v2_2\" target=\"_blank\" rel=\"noopener\">SSIS PowerPack v2.2<\/a> released new <a href=\"\/\/zappysys.com\/products\/ssis-powerpack\/ssis-json-parser-transform\/\" target=\"_blank\" rel=\"noopener\">JSON Parser Transform<\/a>\u00a0and\u00a0<a href=\"\/\/zappysys.com\/products\/ssis-powerpack\/ssis-json-parser-transform\/\" target=\"_blank\" rel=\"noopener\">XML Parser Transform<\/a>\u00a0which can be used to parse any input JSON\/XML data coming from upstream in pipeline. It parse input string \u00a0column into multiple columns how JSON\/XML Source does but the only difference is JSON Parser takes String as input from existing upstream column.<\/p>\n<p>Here are the steps to parse multiple JSON arrays using JSON Parser Transform. For example purpose we will use sample store json listed above.<\/p>\n<ol>\n<li>Drag new data flow in SSIS Control Flow designer. Double click on Data flow<br \/>\n<img decoding=\"async\" class=\"figureimage\" title=\"SSIS Data Flow Task - Drag and Drop\" src=\"https:\/\/zappysys.com\/onlinehelp\/ssis-powerpack\/scr\/images\/drag-and-drop-data-flow-task.png\" alt=\"SSIS Data Flow Task - Drag and Drop\" \/><\/li>\n<li>Drag ZS JSON Source from SSIS Toolbox. Configure Source, Filter and other property.<br \/>\n<img decoding=\"async\" class=\"figureimage\" title=\"SSIS JSON Source - Drag and Drop\" src=\"https:\/\/zappysys.com\/onlinehelp\/ssis-powerpack\/scr\/images\/json-source\/ssis-json-source-adapter-drag.png\" alt=\"SSIS JSON Source - Drag and Drop\" \/><\/li>\n<li>Check [<strong>Output As Document<\/strong>]\u00a0option (Found under Access Mode dropdown).\u00a0Click preview.\u00a0From grid <strong>copy one sample document from __DOCUMENT__ column<\/strong>. (Right click on Cell and Copy).This is raw JSON which we will use later to feed as sample in JSON Parser Transform (If you cant copy JSON then obtain some other way)\n<div id=\"attachment_9175\" style=\"width: 627px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-json-source-output-row-document-option.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-9175\" class=\"size-full wp-image-9175\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-json-source-output-row-document-option.png\" alt=\"Enable Output As Raw Document Option - SSIS JSON Source\" width=\"617\" height=\"753\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-json-source-output-row-document-option.png 617w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-json-source-output-row-document-option-246x300.png 246w\" sizes=\"(max-width: 617px) 100vw, 617px\" \/><\/a><p id=\"caption-attachment-9175\" class=\"wp-caption-text\">Enable Output As Raw Document Option &#8211; SSIS JSON Source<\/p><\/div><\/li>\n<li>Click OK to save JSON Source.<\/li>\n<li>Drag Multicast Transform (Native SSIS Transform) from Toolbox\n<div id=\"attachment_9174\" style=\"width: 546px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-toolbox-drag-multicast-transform.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-9174\" class=\"size-full wp-image-9174\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-toolbox-drag-multicast-transform.png\" alt=\"Drag &amp; Drop SSIS MultiCast Transform from Toolbox on designer surface\" width=\"536\" height=\"204\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-toolbox-drag-multicast-transform.png 536w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-toolbox-drag-multicast-transform-300x114.png 300w\" sizes=\"(max-width: 536px) 100vw, 536px\" \/><\/a><p id=\"caption-attachment-9174\" class=\"wp-caption-text\">Drag &amp; Drop SSIS MultiCast Transform from Toolbox on designer surface<\/p><\/div><\/li>\n<li>Connect JSON Source to Multicast Transform<\/li>\n<li>Drag first\u00a0<a href=\"\/\/zappysys.com\/products\/ssis-powerpack\/ssis-json-parser-transform\/\" target=\"_blank\" rel=\"noopener\">JSON Parser Transform<\/a>\u00a0from Toolbox. Rename it to [Parse Employees]. Connect blue arrow coming from Multicast to JSON Parser Transform<\/li>\n<li>Drag second <a href=\"\/\/zappysys.com\/products\/ssis-powerpack\/ssis-json-parser-transform\/\" target=\"_blank\" rel=\"noopener\">JSON Parser Transform<\/a>\u00a0from Toolbox. Rename it to [Parse Books]. Connect blue arrow coming from Multicast to JSON Parser Transform<\/li>\n<li>Double click [Parse Employees].\u00a0Select <strong>__DOCUMENT__<\/strong> as upstream column. Enter sample JSON you obtained in step#3. Click on select Filter and highlight Employees node (i.e. $.store.employees[*] ). Click preview to see data.\n<div id=\"attachment_2399\" style=\"width: 714px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2017\/12\/ssis-sql-server-to-elasticsearch-json-parser-transform-configuration.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2399\" class=\"size-full wp-image-2399\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2017\/12\/ssis-sql-server-to-elasticsearch-json-parser-transform-configuration.png\" alt=\"Use JSON Parser Transform to parse Elasticsearch API HTTP JSON response into columns to redirect the rows later\" width=\"704\" height=\"622\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2017\/12\/ssis-sql-server-to-elasticsearch-json-parser-transform-configuration.png 704w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2017\/12\/ssis-sql-server-to-elasticsearch-json-parser-transform-configuration-300x265.png 300w\" sizes=\"(max-width: 704px) 100vw, 704px\" \/><\/a><p id=\"caption-attachment-2399\" class=\"wp-caption-text\">Use <em>JSON Parser Transform<\/em> to parse Raw JSON document<\/p><\/div><\/li>\n<li><strong>Very Important:<\/strong>Click Columns tab and verify metadata (e.g. datatype, length). If you think you need extra columns or bigger column length then change in the grid and check [Lock] option found in the last grid column. If column length is smaller than output data then you will get error message when you run package. You can review error message carefully to determine which column needs to be adjusted \u00a0(Repeat this until you clear all errors).<\/li>\n<li>Click OK to save [Parse Employees].<\/li>\n<li>Double click [Parse Books]. Select __DOCUMENT__ as upstream column. Enter sample JSON you obtained in step#3. Click on select Filter and highlight Books node (i.e. $.store.books[*] ). Click ok. Click preview to see data.<\/li>\n<li>Perform same steps as #11 for \u00a0[Parse Books] to set correct metadata.<\/li>\n<li>Click OK to save [Parse Books].<\/li>\n<li>Drag ZS Trash destination\u00a0from Toolbox. Connect Trash destination to [Parse Employees]<\/li>\n<li>Drag ZS Trash destination\u00a0from Toolbox. Connect Trash destination to [Parse Books]<\/li>\n<li>Run the package and you will see both 2 outputs from different JSON Parser with different row count.<\/li>\n<\/ol>\n<p>Here is how it will look like<\/p>\n<div style=\"width: 789px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"\/\/zappysys.com\/onlinehelp\/ssis-powerpack\/scr\/images\/json-parser-transform\/ssis-json-extract-multiple-array-output-using-parser.png\" alt=\"Extract multiple array output from JSON file \/ REST API response in (SSIS JSON Source, JSON Parser Transform)\" width=\"779\" height=\"555\" \/><p class=\"wp-caption-text\">Extract multiple array output from JSON file \/ REST API response in (SSIS JSON Source, JSON Parser Transform)<\/p><\/div>\n<p>&nbsp;<\/p>\n<h3>Method-2: Use multiple JSON Sources with different filter expressions<\/h3>\n<p>You\u00a0can consider using multiple JSON Source (each source with unique filter expression). Since one JSON source can only extract one array or Document.. You have to use below technique to read multiple arrays from same JSON document.<\/p>\n<div id=\"attachment_322\" style=\"width: 601px\" class=\"wp-caption alignnone\"><a href=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/read-multiple-array-from-json-data-file.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-322\" class=\"size-full wp-image-322\" src=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/read-multiple-array-from-json-data-file.png\" alt=\"Read array from JSON data - Reading multiple array or single array\" width=\"591\" height=\"293\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/read-multiple-array-from-json-data-file.png 591w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/read-multiple-array-from-json-data-file-300x149.png 300w\" sizes=\"(max-width: 591px) 100vw, 591px\" \/><\/a><p id=\"caption-attachment-322\" class=\"wp-caption-text\">Read array from JSON data &#8211; Reading multiple array or single array<\/p><\/div>\n<h3>Method-3: Use Array Flattening Option (Preferred for smaller arrays)<\/h3>\n<p>If you have array inside extracted record and you like to flatten it so each items of array becomes column then use newly introduced feature [<strong>Enable Array Flattening<\/strong>]\n<p>Consider JSON like below. What if you don&#8217;t like to store every detail from below JSON in just one table (i.e. rather than splitting in 3 tables Customers, CustomerHobbies , CustomerAddresses ?) . To achieve full denormalization ZappySys offers powerful yet simple one click option.<\/p>\n<pre class=\"lang:default decode:true\">{\r\n\t\"Customer\" : [{\r\n\t\t\t\"Name\" : \"John\",\r\n\t\t\t\"Hobby\" : [\"Painting\",\"Reading\",\"Swimming\"],\r\n\t\t\t\"Addresses\" : [\r\n\t\t\t\t{\"Street\":\"100 Main St\",\"ZipCode\":\"10062\"}, \r\n\t\t\t\t{\"Street\":\"101 Fire St\",\"ZipCode\":\"11121\"}\r\n\t\t\t]\r\n\t\t}, {\r\n\t\t\t\"Name\" : \"Peter\",\r\n\t\t\t\"Hobby\" : [\"Hiking\",\"Golf\"],\r\n\t\t\t\"Addresses\" : [\r\n\t\t\t\t{\"Street\":\"200 Main St\",\"ZipCode\":\"20062\"}, \r\n\t\t\t\t{\"Street\":\"201 Fire St\",\"ZipCode\":\"33321\"}\r\n\t\t\t]\r\n\t\t}\r\n\t]\r\n}<\/pre>\n<p>To enable flattening check below option on Filter<\/p>\n<div id=\"attachment_4760\" style=\"width: 857px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/json-array-flattening-option.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-4760\" class=\"size-full wp-image-4760\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/json-array-flattening-option.png\" alt=\"JSON Array Flattening Option in SSIS JSON Source \" width=\"847\" height=\"551\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/json-array-flattening-option.png 847w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/json-array-flattening-option-300x195.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/json-array-flattening-option-768x500.png 768w\" sizes=\"(max-width: 847px) 100vw, 847px\" \/><\/a><p id=\"caption-attachment-4760\" class=\"wp-caption-text\">JSON Array Flattening Option in SSIS JSON Source<\/p><\/div>\n<p>&nbsp;<\/p>\n<div id=\"attachment_4761\" style=\"width: 454px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-json-source-columns-denormalize-array-option.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-4761\" class=\"size-full wp-image-4761\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-json-source-columns-denormalize-array-option.png\" alt=\"Column after Array Flattening Option\" width=\"444\" height=\"443\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-json-source-columns-denormalize-array-option.png 444w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-json-source-columns-denormalize-array-option-150x150.png 150w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-json-source-columns-denormalize-array-option-300x300.png 300w\" sizes=\"(max-width: 444px) 100vw, 444px\" \/><\/a><p id=\"caption-attachment-4761\" class=\"wp-caption-text\">Column after Array Flattening Option<\/p><\/div>\n<p>&nbsp;<\/p>\n<h2>Using JSON REST API Connector to parse JSON data<\/h2>\n<p>If you want to access JSON data from REST API then you can use same JSON Source Connector.\u00a0 All you have to do is rather than local file path c:\\data\\xyz.json change it to URL as below and you will be able to access and filter JSON data using same technique as above.<\/p>\n<div style=\"width: 657px\" class=\"wp-caption alignnone\"><a href=\"\/\/zappysys.com\/onlinehelp\/ssis-powerpack\/scr\/images\/json-source\/ssis-json-source-data-from-web-url.png\"><img loading=\"lazy\" decoding=\"async\" src=\"\/\/zappysys.com\/onlinehelp\/ssis-powerpack\/scr\/images\/json-source\/ssis-json-source-data-from-web-url.png\" alt=\"Get JSON data from URL (REST API JSON response)\" width=\"647\" height=\"574\" \/><\/a><p class=\"wp-caption-text\">Get JSON data from URL (REST API JSON response)<\/p><\/div>\n<h2>JSON Path for recursive data extract (Double dot expression)<\/h2>\n<p>There will be a time when you dont know how many levels deep you have to go for data extract. See below example. We will to get all employees id and name from hierarchy. For that you can use double dot like below. As you can see there are many nested levels and we want to extract id and name from each level so data can be<\/p>\n<p><strong>Expected Output<\/strong><\/p>\n<pre class=\"lang:default highlight:0 decode:true\">id      name\r\n-------------------------\r\n100\tJeff (CEO)\r\n200\tBob (VP Sales)\r\n300\tKim (VP HR)\r\n400\tKumar (VP Dev)\r\n210\tRon (Sales Mgr)\t\r\n220\tAkash (Sales Mgr)\t\r\n410\tDen (Sr. Dev)\t\r\n420\tDen (Sr. Dev)\r\n411\tDen (Jr. Dev)\r\n412\tSita (Jr. Dev)<\/pre>\n<p><strong>Sample Data<\/strong><\/p>\n<pre class=\"lang:js decode:true\">{\r\n  \"employees\": [\r\n    {\r\n      \"id\": 100,\r\n      \"name\": \"Jeff (CEO)\",\r\n      \"employees\": [\r\n        {\r\n          \"id\": 200,\r\n          \"name\": \"Bob (VP Sales)\",\r\n          \"employees\": [\r\n            {\r\n              \"id\": 210,\r\n              \"name\": \"Ron (Sales Mgr)\"\r\n            },\r\n            {\r\n              \"id\": 220,\r\n              \"name\": \"Akash (Sales Mgr)\"\r\n            }\r\n          ]\r\n        },\r\n        {\r\n          \"id\": 300,\r\n          \"name\": \"Kim (VP HR)\"\r\n        },\r\n        {\r\n          \"id\": 400,\r\n          \"name\": \"Kumar (VP Dev)\",\r\n          \"employees\": [\r\n            {\r\n              \"id\": 410,\r\n              \"name\": \"Den (Sr. Dev)\",\r\n              \"employees\": [\r\n                {\r\n                  \"id\": 411,\r\n                  \"name\": \"Den (Jr. Dev)\"\r\n                },\r\n                {\r\n                  \"id\": 412,\r\n                  \"name\": \"Sita (Jr. Dev)\"\r\n                }\r\n              ]\r\n            },\r\n            {\r\n              \"id\": 420,\r\n              \"name\": \"Den (Sr. Dev)\"\r\n            }\r\n          ]\r\n        }\r\n      ]\r\n    }\r\n  ]\r\n}<\/pre>\n<p><strong>Configure JSON Source for Recursive Children Scan using Double Dot JSONPath<\/strong><\/p>\n<p>Open JSON Source and configure like below.<\/p>\n<p>Set Filter as $..employees[*] (Notice how we used double dots in expression. This does recursive scan for N number of levels)<\/p>\n<div id=\"attachment_8960\" style=\"width: 1214px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-extract-json-array-recursive-double-dot-jsonpath.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-8960\" class=\"size-full wp-image-8960\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-extract-json-array-recursive-double-dot-jsonpath.png\" alt=\"JSON Path for recursive scan of nested array (many levels deep)\" width=\"1204\" height=\"788\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-extract-json-array-recursive-double-dot-jsonpath.png 1204w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-extract-json-array-recursive-double-dot-jsonpath-300x196.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-extract-json-array-recursive-double-dot-jsonpath-768x503.png 768w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/ssis-extract-json-array-recursive-double-dot-jsonpath-1024x670.png 1024w\" sizes=\"(max-width: 1204px) 100vw, 1204px\" \/><\/a><p id=\"caption-attachment-8960\" class=\"wp-caption-text\">JSON Path for recursive scan of nested array (many levels deep)<\/p><\/div>\n<h2>Parse Multi-Dimensional Array<\/h2>\n<p>If you want to learn more how to parse Multi-Dimensional JSON arrays then check <a href=\"\/\/zappysys.com\/blog\/parse-multi-dimensional-json-array-ssis\/\" target=\"_blank\" rel=\"noopener\">this article<\/a>\u00a0full length article.<\/p>\n<h3><strong>Sample JSON with Multi Dimensional array<\/strong><\/h3>\n<pre class=\"lang:default decode:true\">{\r\n  \"columns\" : [\"Id\", \"FirstName\", \"IsActive\"],\r\n  \"rows\" : [ [1,\"bob\",true], [2,\"sam\",false], [3,\"joe\",true] ]\r\n}<\/pre>\n<h3><strong>Array Transformation Options for 2D array<\/strong><\/h3>\n<p><a href=\"https:\/\/i0.wp.com\/zappysys.com\/blog\/wp-content\/uploads\/2017\/08\/ssis-parse-json-array-pattern-1-select-2d-transformation.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1640\" src=\"https:\/\/i0.wp.com\/zappysys.com\/blog\/wp-content\/uploads\/2017\/08\/ssis-parse-json-array-pattern-1-select-2d-transformation.png?resize=687%2C165\" sizes=\"(max-width: 687px) 100vw, 687px\" srcset=\"https:\/\/i0.wp.com\/zappysys.com\/blog\/wp-content\/uploads\/2017\/08\/ssis-parse-json-array-pattern-1-select-2d-transformation.png?w=687 687w, https:\/\/i0.wp.com\/zappysys.com\/blog\/wp-content\/uploads\/2017\/08\/ssis-parse-json-array-pattern-1-select-2d-transformation.png?resize=300%2C72 300w\" alt=\"\" width=\"687\" height=\"165\" data-attachment-id=\"1640\" data-permalink=\"\/\/zappysys.com\/blog\/parse-multi-dimensional-json-array-ssis\/ssis-parse-json-array-pattern-1-select-2d-transformation\/#main\" data-orig-file=\"https:\/\/i0.wp.com\/zappysys.com\/blog\/wp-content\/uploads\/2017\/08\/ssis-parse-json-array-pattern-1-select-2d-transformation.png?fit=687%2C165\" data-orig-size=\"687,165\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"ssis-parse-json-array-pattern-1-select-2d-transformation\" data-image-description=\"\" data-medium-file=\"https:\/\/i0.wp.com\/zappysys.com\/blog\/wp-content\/uploads\/2017\/08\/ssis-parse-json-array-pattern-1-select-2d-transformation.png?fit=300%2C72\" data-large-file=\"https:\/\/i0.wp.com\/zappysys.com\/blog\/wp-content\/uploads\/2017\/08\/ssis-parse-json-array-pattern-1-select-2d-transformation.png?fit=687%2C165\" \/><\/a><\/p>\n<p><strong>Sample JSON with Multi Dimensional array (No columns in document)<\/strong><\/p>\n<pre class=\"lang:default decode:true \">{\r\n  \"rows\" : [ [1,\"bob\",true], [2,\"sam\",false], [3,\"joe\",true] ]\r\n}<\/pre>\n<p><strong>Array Transformation Options for 2D array<\/strong><\/p>\n<p><img decoding=\"async\" src=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2017\/08\/ssis-parse-json-array-pattern-2-select-2d-transformation.png\" \/><\/p>\n<h2>Performance Tips<\/h2>\n<p>In this section we will describe how to make your things faster.<\/p>\n<h3>Reduce number of requests to server by changing page size<\/h3>\n<p>If you are doing <a href=\"\/\/zappysys.com\/blog\/odata-paging-rest-api-paging-using-ssis-json-source\/\" target=\"_blank\" rel=\"noopener\">REST API paging to get full resultset <\/a> then make sure you adjust page size to appropriate number so total requests sent to server is reduced. Each request to server adds overhead. Most of API supports page size parameter. Refer to your API documentation how to adjust page size.<\/p>\n<h3>Avoid multiple REST API Round trips by caching response<\/h3>\n<p>If you extracting multiple arrays from REST API response using above technique then we recommend you to use <a href=\"\/\/zappysys.com\/products\/ssis-powerpack\/ssis-rest-api-web-service-task\/\" target=\"_blank\" rel=\"noopener\">REST API Task <\/a>so save response to File or variable first and then use cached JSON data multiple times. This approach is not as friendly as others but it can certainly reduce your\u00a0total API requests.<\/p>\n<h3>Use GZip compression<\/h3>\n<p>If your REST API supports GZip compression then check Enable Gzip on Advanced tab of <a href=\"\/\/zappysys.com\/products\/ssis-powerpack\/ssis-json-file-source\/\">SSIS JSON Source (File, REST API Connector).<\/a> This will compress response in Gzip format from server and when it comes to your server it will be automatically decompressed by JSON Source connector. This seeds up thing significantly if you have lots of data to download.<\/p>\n<h3>Uncheck include parent columns if not needed<\/h3>\n<p>By default JSON Source connect includes parent column (Level above last property in filter) from the Filter path you specify. For Example \u00a0if you specify $.store.employees[*] and &#8220;Include parent columns&#8221; checked then It will extract all employees and then also include parent level columns for store (Tip: Parent column name start with P_ by\u00a0default)\u00a0. If you don&#8217;t need parent columns then uncheck from output, this\u00a0reduces many steps during data extract process.<\/p>\n<h2>Download sample package<\/h2>\n<p><a href=\"\/\/zappysys.com\/onlinehelp\/ssis-powerpack\/scr\/images\/json-parser-transform\/JsonXmlMultiOutputDemo_ParserTransform_2012.zip\">Click here to download SSIS 2012 Package<\/a> (Will work in SSIS 2014, 2016)<\/p>\n<h2>Conclusion<\/h2>\n<p>In this post you learned how to extract data from JSON array and how to make data extract fast. Download <a href=\"\/\/zappysys.com\/products\/ssis-powerpack\/ssis-json-file-source\/\">SSIS JSON Source (File, REST API Connector)<\/a>\u00a0to try everything listed above.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction REST API is becoming more and more common and with that you will see explosion in use of JSON data format. One of the questions we get a lot is &#8220;How to extract or read array from JSON data file&#8221; or &#8220;How to read multiple arrays from JSON data&#8220;. Example : Store JSON document [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3074,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[6,13,18,3,149,148,4,141],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>Reading JSON Arrays from file \/ REST API | ZappySys Blog<\/title>\r\n<meta name=\"description\" content=\"Learn how to read array from JSON file. Also learn how to read multiple arrays from JSON data using SSIS JSON Source (File,REST API Connector) in few clicks\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Reading JSON Arrays from file \/ REST API | ZappySys Blog\" \/>\r\n<meta property=\"og:description\" content=\"Learn how to read array from JSON file. Also learn how to read multiple arrays from JSON data using SSIS JSON Source (File,REST API Connector) in few clicks\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/\" \/>\r\n<meta property=\"og:site_name\" content=\"ZappySys Blog\" \/>\r\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/ZappySys\/\" \/>\r\n<meta property=\"article:published_time\" content=\"2016-01-11T16:50:48+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2024-12-11T15:24:27+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/SSIS-Json-Source-Adapter.png\" \/>\r\n\t<meta property=\"og:image:width\" content=\"100\" \/>\r\n\t<meta property=\"og:image:height\" content=\"100\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\r\n<meta name=\"author\" content=\"ZappySys\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/zappysys\/\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"ZappySys\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/\",\"url\":\"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/\",\"name\":\"Reading JSON Arrays from file \/ REST API | ZappySys Blog\",\"isPartOf\":{\"@id\":\"https:\/\/zappysys.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/SSIS-Json-Source-Adapter.png\",\"datePublished\":\"2016-01-11T16:50:48+00:00\",\"dateModified\":\"2024-12-11T15:24:27+00:00\",\"author\":{\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82\"},\"description\":\"Learn how to read array from JSON file. Also learn how to read multiple arrays from JSON data using SSIS JSON Source (File,REST API Connector) in few clicks\",\"breadcrumb\":{\"@id\":\"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/#primaryimage\",\"url\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/SSIS-Json-Source-Adapter.png\",\"contentUrl\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/SSIS-Json-Source-Adapter.png\",\"width\":100,\"height\":100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/zappysys.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Reading JSON Arrays from file \/ REST API\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/zappysys.com\/blog\/#website\",\"url\":\"https:\/\/zappysys.com\/blog\/\",\"name\":\"ZappySys Blog\",\"description\":\"SSIS \/ ODBC Drivers \/ API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/zappysys.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82\",\"name\":\"ZappySys\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g\",\"caption\":\"ZappySys\"},\"sameAs\":[\"http:\/\/www.zappysys.com\/\",\"https:\/\/www.facebook.com\/ZappySys\/\",\"https:\/\/twitter.com\/https:\/\/twitter.com\/zappysys\/\"],\"url\":\"https:\/\/zappysys.com\/blog\/author\/admin\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Reading JSON Arrays from file \/ REST API | ZappySys Blog","description":"Learn how to read array from JSON file. Also learn how to read multiple arrays from JSON data using SSIS JSON Source (File,REST API Connector) in few clicks","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:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/","og_locale":"en_US","og_type":"article","og_title":"Reading JSON Arrays from file \/ REST API | ZappySys Blog","og_description":"Learn how to read array from JSON file. Also learn how to read multiple arrays from JSON data using SSIS JSON Source (File,REST API Connector) in few clicks","og_url":"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/","og_site_name":"ZappySys Blog","article_author":"https:\/\/www.facebook.com\/ZappySys\/","article_published_time":"2016-01-11T16:50:48+00:00","article_modified_time":"2024-12-11T15:24:27+00:00","og_image":[{"width":100,"height":100,"url":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/SSIS-Json-Source-Adapter.png","type":"image\/png"}],"author":"ZappySys","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/zappysys\/","twitter_misc":{"Written by":"ZappySys","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/","url":"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/","name":"Reading JSON Arrays from file \/ REST API | ZappySys Blog","isPartOf":{"@id":"https:\/\/zappysys.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/#primaryimage"},"image":{"@id":"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/#primaryimage"},"thumbnailUrl":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/SSIS-Json-Source-Adapter.png","datePublished":"2016-01-11T16:50:48+00:00","dateModified":"2024-12-11T15:24:27+00:00","author":{"@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82"},"description":"Learn how to read array from JSON file. Also learn how to read multiple arrays from JSON data using SSIS JSON Source (File,REST API Connector) in few clicks","breadcrumb":{"@id":"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/#primaryimage","url":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/SSIS-Json-Source-Adapter.png","contentUrl":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/01\/SSIS-Json-Source-Adapter.png","width":100,"height":100},{"@type":"BreadcrumbList","@id":"https:\/\/zappysys.com\/blog\/extract-read-multiple-arrays-from-json-data-file-rest-api-response\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zappysys.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Reading JSON Arrays from file \/ REST API"}]},{"@type":"WebSite","@id":"https:\/\/zappysys.com\/blog\/#website","url":"https:\/\/zappysys.com\/blog\/","name":"ZappySys Blog","description":"SSIS \/ ODBC Drivers \/ API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zappysys.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82","name":"ZappySys","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g","caption":"ZappySys"},"sameAs":["http:\/\/www.zappysys.com\/","https:\/\/www.facebook.com\/ZappySys\/","https:\/\/twitter.com\/https:\/\/twitter.com\/zappysys\/"],"url":"https:\/\/zappysys.com\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/298"}],"collection":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/comments?post=298"}],"version-history":[{"count":14,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/298\/revisions"}],"predecessor-version":[{"id":11195,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/298\/revisions\/11195"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/media\/3074"}],"wp:attachment":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/media?parent=298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/categories?post=298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/tags?post=298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}