{"id":97719,"date":"2021-08-04T15:16:33","date_gmt":"2021-08-04T19:16:33","guid":{"rendered":"https:\/\/ibkrcampus.com\/?p=97719"},"modified":"2022-11-21T09:47:50","modified_gmt":"2022-11-21T14:47:50","slug":"how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i","status":"publish","type":"post","link":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\/","title":{"rendered":"How to Wrangle JSON Data in R with jsonlite, purr and dplyr &#8211; Part I"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Working with modern APIs you will often have to wrangle with data in JSON format.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This article presents some tools and recipes for working with JSON data with R in the tidyverse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We\u2019ll use&nbsp;<code>purrr::map<\/code>&nbsp;functions to extract and transform our JSON data. And we\u2019ll provide intuitive examples of the cross-overs and differences between&nbsp;<code>purrr<\/code>&nbsp;and&nbsp;<code>dplyr<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>library(tidyverse)\nlibrary(here)\nlibrary(kableExtra)\npretty_print &lt;- function(df, num_rows) {\n  df %&gt;%\n  head(num_rows) %&gt;%\n    kable() %&gt;%\n    kable_styling(full_width = TRUE, position = 'center') %&gt;%\n    scroll_box(height = '300px')\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-load-json-as-nested-named-lists\">Load JSON as nested named lists<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This data has been converted from raw JSON to nested named lists using&nbsp;<code>jsonlite::fromJSON<\/code>&nbsp;with the&nbsp;<code>simplify<\/code>&nbsp;argument set to&nbsp;<code>FALSE<\/code>&nbsp;(that is, all elements are converted to named lists).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The data consists of market data for SPY options with various strikes and expiries. We got it from the options data vendor&nbsp;<a href=\"https:\/\/info.orats.com\/dataapi?hsCtaTracking=e95bffda-578d-41f2-93b6-7c2593c664ff%7C64874a9b-3a1d-4a10-b46a-9cf15fcb7543\">Orats<\/a>, whose data API I enjoy almost as much as their orange website.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to follow along, you can sign-up for a free trial of the API, and load the data directly from the Orats API with the following code&nbsp;<em>(just define your API key in the&nbsp;<code>ORATS_token<\/code>&nbsp;variable):<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>library(httr)\nORATS_token &lt;- 'YOUR_KEY_HERE'\nres &lt;- GET('https:\/\/api.orats.io\/data\/strikes?tickers=SPY', add_headers(Authorization = ORATS_token))\nif (http_type(res) == 'application\/json') {\n  strikes &lt;- jsonlite::fromJSON(content(res, 'text'), simplifyVector = FALSE)\n} else {\n  stop('No json returned')\n}\nif (http_error(res)) {\n  stop(paste('API request error:',status_code(res), odata$message, odata$documentation_url))\n} <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Now, if you want to read this data directly into a nicely formatted dataframe, replace the line:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>strikes &lt;- jsonlite::fromJSON(content(res, 'text'), simplifyVector = FALSE)<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">with<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>strikes &lt;- jsonlite::fromJSON(content(res, 'text'), simplifyVector = TRUE, flatten = TRUE)<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, you should know that it isn\u2019t always possible to coerce JSON into nicely shaped dataframes this easily \u2013 often the raw JSON won\u2019t contain primitive types, or will have nested key-value pairs on the same level as your desired dataframe columns, to name a couple of obstacles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In that case, it\u2019s useful to have some tools \u2013 like the ones in this post \u2013 for wrangling your source data.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Stay tuned for the next installment in which Kris Longmore will look inside JSON lists.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Visit Robot Wealth website for additional insight on this topic and to download the complete set of scripts: <a href=\"https:\/\/robotwealth.com\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr\/\">https:\/\/robotwealth.com\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr\/<\/a>.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Working with modern APIs you will often have to wrangle with data in JSON format. This article presents some tools and recipes for working with JSON data with R in the tidyverse.<\/p>\n","protected":false},"author":271,"featured_media":63588,"comment_status":"closed","ping_status":"open","sticky":true,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[339,343,338,350,341,9563,344,342],"tags":[806,10094,2535,10091,10095,10092,10093,2461,487,6591,1045],"contributors-categories":[13676],"class_list":["post-97719","post","type-post","status-publish","format-standard","has-post-thumbnail","category-data-science","category-programing-languages","category-ibkr-quant-news","category-quant-asia-pacific","category-quant-development","category-options-quant","category-quant-regions","category-r-development","tag-data-science","tag-dataframes","tag-dplyr","tag-json-data","tag-jsonlite","tag-kableextra","tag-nested-named-lists","tag-purr","tag-r","tag-rstats","tag-tidyverse","contributors-categories-robot-wealth"],"pp_statuses_selecting_workflow":false,"pp_workflow_action":"current","pp_status_selection":"publish","acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v28.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Wrangle JSON Data in R with jsonlite, purr and dplyr &#8211; Part I<\/title>\n<meta name=\"description\" content=\"Working with modern APIs you will often have to wrangle with data in JSON format. This article presents some tools and recipes for working with JSON...\" \/>\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.interactivebrokers.com\/campus\/wp-json\/wp\/v2\/posts\/97719\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Wrangle JSON Data in R with jsonlite, purr and dplyr - Part I | IBKR Quant Blog\" \/>\n<meta property=\"og:description\" content=\"Working with modern APIs you will often have to wrangle with data in JSON format. This article presents some tools and recipes for working with JSON data with R in the tidyverse.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\/\" \/>\n<meta property=\"og:site_name\" content=\"IBKR Campus US\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-04T19:16:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-21T14:47:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2020\/10\/digital-cube-numbers.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"550\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Kris Longmore\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kris Longmore\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\n\t    \"@context\": \"https:\\\/\\\/schema.org\",\n\t    \"@graph\": [\n\t        {\n\t            \"@type\": \"NewsArticle\",\n\t            \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\\\/#article\",\n\t            \"isPartOf\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\\\/\"\n\t            },\n\t            \"author\": {\n\t                \"name\": \"Kris Longmore\",\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#\\\/schema\\\/person\\\/79c2a2775a70a4da1accf0068d731933\"\n\t            },\n\t            \"headline\": \"How to Wrangle JSON Data in R with jsonlite, purr and dplyr &#8211; Part I\",\n\t            \"datePublished\": \"2021-08-04T19:16:33+00:00\",\n\t            \"dateModified\": \"2022-11-21T14:47:50+00:00\",\n\t            \"mainEntityOfPage\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\\\/\"\n\t            },\n\t            \"wordCount\": 316,\n\t            \"publisher\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#organization\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\\\/#primaryimage\"\n\t            },\n\t            \"thumbnailUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2020\\\/10\\\/digital-cube-numbers.jpg\",\n\t            \"keywords\": [\n\t                \"Data Science\",\n\t                \"Dataframes\",\n\t                \"dplyr\",\n\t                \"JSON data\",\n\t                \"jsonlite\",\n\t                \"kableExtra\",\n\t                \"nested named lists\",\n\t                \"PURR\",\n\t                \"R\",\n\t                \"rstats\",\n\t                \"tidyverse\"\n\t            ],\n\t            \"articleSection\": [\n\t                \"Data Science\",\n\t                \"Programming Languages\",\n\t                \"Quant\",\n\t                \"Quant Asia Pacific\",\n\t                \"Quant Development\",\n\t                \"Quant Options\",\n\t                \"Quant Regions\",\n\t                \"R Development\"\n\t            ],\n\t            \"inLanguage\": \"en-US\"\n\t        },\n\t        {\n\t            \"@type\": \"WebPage\",\n\t            \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\\\/\",\n\t            \"url\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\\\/\",\n\t            \"name\": \"How to Wrangle JSON Data in R with jsonlite, purr and dplyr - Part I | IBKR Quant Blog\",\n\t            \"isPartOf\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#website\"\n\t            },\n\t            \"primaryImageOfPage\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\\\/#primaryimage\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\\\/#primaryimage\"\n\t            },\n\t            \"thumbnailUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2020\\\/10\\\/digital-cube-numbers.jpg\",\n\t            \"datePublished\": \"2021-08-04T19:16:33+00:00\",\n\t            \"dateModified\": \"2022-11-21T14:47:50+00:00\",\n\t            \"description\": \"Working with modern APIs you will often have to wrangle with data in JSON format. This article presents some tools and recipes for working with JSON data with R in the tidyverse.\",\n\t            \"inLanguage\": \"en-US\",\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"ReadAction\",\n\t                    \"target\": [\n\t                        \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\\\/\"\n\t                    ]\n\t                }\n\t            ]\n\t        },\n\t        {\n\t            \"@type\": \"ImageObject\",\n\t            \"inLanguage\": \"en-US\",\n\t            \"@id\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/ibkr-quant-news\\\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\\\/#primaryimage\",\n\t            \"url\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2020\\\/10\\\/digital-cube-numbers.jpg\",\n\t            \"contentUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2020\\\/10\\\/digital-cube-numbers.jpg\",\n\t            \"width\": 900,\n\t            \"height\": 550,\n\t            \"caption\": \"world\"\n\t        },\n\t        {\n\t            \"@type\": \"WebSite\",\n\t            \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#website\",\n\t            \"url\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/\",\n\t            \"name\": \"IBKR Campus US\",\n\t            \"description\": \"Financial Education from Interactive Brokers\",\n\t            \"publisher\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#organization\"\n\t            },\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"SearchAction\",\n\t                    \"target\": {\n\t                        \"@type\": \"EntryPoint\",\n\t                        \"urlTemplate\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/?s={search_term_string}\"\n\t                    },\n\t                    \"query-input\": {\n\t                        \"@type\": \"PropertyValueSpecification\",\n\t                        \"valueRequired\": true,\n\t                        \"valueName\": \"search_term_string\"\n\t                    }\n\t                }\n\t            ],\n\t            \"inLanguage\": \"en-US\"\n\t        },\n\t        {\n\t            \"@type\": \"Organization\",\n\t            \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#organization\",\n\t            \"name\": \"Interactive Brokers\",\n\t            \"alternateName\": \"IBKR\",\n\t            \"url\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/\",\n\t            \"logo\": {\n\t                \"@type\": \"ImageObject\",\n\t                \"inLanguage\": \"en-US\",\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#\\\/schema\\\/logo\\\/image\\\/\",\n\t                \"url\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2024\\\/05\\\/ibkr-campus-logo.jpg\",\n\t                \"contentUrl\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2024\\\/05\\\/ibkr-campus-logo.jpg\",\n\t                \"width\": 669,\n\t                \"height\": 669,\n\t                \"caption\": \"Interactive Brokers\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#\\\/schema\\\/logo\\\/image\\\/\"\n\t            },\n\t            \"publishingPrinciples\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/about-ibkr-campus\\\/\",\n\t            \"ethicsPolicy\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/cyber-security-notice\\\/\"\n\t        },\n\t        {\n\t            \"@type\": \"Person\",\n\t            \"@id\": \"https:\\\/\\\/ibkrcampus.com\\\/campus\\\/#\\\/schema\\\/person\\\/79c2a2775a70a4da1accf0068d731933\",\n\t            \"name\": \"Kris Longmore\",\n\t            \"url\": \"https:\\\/\\\/www.interactivebrokers.com\\\/campus\\\/author\\\/krislongmore\\\/\"\n\t        }\n\t    ]\n\t}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Wrangle JSON Data in R with jsonlite, purr and dplyr &#8211; Part I","description":"Working with modern APIs you will often have to wrangle with data in JSON format. This article presents some tools and recipes for working with JSON...","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.interactivebrokers.com\/campus\/wp-json\/wp\/v2\/posts\/97719\/","og_locale":"en_US","og_type":"article","og_title":"How to Wrangle JSON Data in R with jsonlite, purr and dplyr - Part I | IBKR Quant Blog","og_description":"Working with modern APIs you will often have to wrangle with data in JSON format. This article presents some tools and recipes for working with JSON data with R in the tidyverse.","og_url":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\/","og_site_name":"IBKR Campus US","article_published_time":"2021-08-04T19:16:33+00:00","article_modified_time":"2022-11-21T14:47:50+00:00","og_image":[{"width":900,"height":550,"url":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2020\/10\/digital-cube-numbers.jpg","type":"image\/jpeg"}],"author":"Kris Longmore","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kris Longmore","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\/#article","isPartOf":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\/"},"author":{"name":"Kris Longmore","@id":"https:\/\/ibkrcampus.com\/campus\/#\/schema\/person\/79c2a2775a70a4da1accf0068d731933"},"headline":"How to Wrangle JSON Data in R with jsonlite, purr and dplyr &#8211; Part I","datePublished":"2021-08-04T19:16:33+00:00","dateModified":"2022-11-21T14:47:50+00:00","mainEntityOfPage":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\/"},"wordCount":316,"publisher":{"@id":"https:\/\/ibkrcampus.com\/campus\/#organization"},"image":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\/#primaryimage"},"thumbnailUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2020\/10\/digital-cube-numbers.jpg","keywords":["Data Science","Dataframes","dplyr","JSON data","jsonlite","kableExtra","nested named lists","PURR","R","rstats","tidyverse"],"articleSection":["Data Science","Programming Languages","Quant","Quant Asia Pacific","Quant Development","Quant Options","Quant Regions","R Development"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\/","url":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\/","name":"How to Wrangle JSON Data in R with jsonlite, purr and dplyr - Part I | IBKR Quant Blog","isPartOf":{"@id":"https:\/\/ibkrcampus.com\/campus\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\/#primaryimage"},"image":{"@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\/#primaryimage"},"thumbnailUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2020\/10\/digital-cube-numbers.jpg","datePublished":"2021-08-04T19:16:33+00:00","dateModified":"2022-11-21T14:47:50+00:00","description":"Working with modern APIs you will often have to wrangle with data in JSON format. This article presents some tools and recipes for working with JSON data with R in the tidyverse.","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.interactivebrokers.com\/campus\/ibkr-quant-news\/how-to-wrangle-json-data-in-r-with-jsonlite-purr-and-dplyr-part-i\/#primaryimage","url":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2020\/10\/digital-cube-numbers.jpg","contentUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2020\/10\/digital-cube-numbers.jpg","width":900,"height":550,"caption":"world"},{"@type":"WebSite","@id":"https:\/\/ibkrcampus.com\/campus\/#website","url":"https:\/\/ibkrcampus.com\/campus\/","name":"IBKR Campus US","description":"Financial Education from Interactive Brokers","publisher":{"@id":"https:\/\/ibkrcampus.com\/campus\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ibkrcampus.com\/campus\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ibkrcampus.com\/campus\/#organization","name":"Interactive Brokers","alternateName":"IBKR","url":"https:\/\/ibkrcampus.com\/campus\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ibkrcampus.com\/campus\/#\/schema\/logo\/image\/","url":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2024\/05\/ibkr-campus-logo.jpg","contentUrl":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2024\/05\/ibkr-campus-logo.jpg","width":669,"height":669,"caption":"Interactive Brokers"},"image":{"@id":"https:\/\/ibkrcampus.com\/campus\/#\/schema\/logo\/image\/"},"publishingPrinciples":"https:\/\/www.interactivebrokers.com\/campus\/about-ibkr-campus\/","ethicsPolicy":"https:\/\/www.interactivebrokers.com\/campus\/cyber-security-notice\/"},{"@type":"Person","@id":"https:\/\/ibkrcampus.com\/campus\/#\/schema\/person\/79c2a2775a70a4da1accf0068d731933","name":"Kris Longmore","url":"https:\/\/www.interactivebrokers.com\/campus\/author\/krislongmore\/"}]}},"jetpack_featured_media_url":"https:\/\/www.interactivebrokers.com\/campus\/wp-content\/uploads\/sites\/2\/2020\/10\/digital-cube-numbers.jpg","_links":{"self":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/posts\/97719","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/users\/271"}],"replies":[{"embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/comments?post=97719"}],"version-history":[{"count":0,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/posts\/97719\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/media\/63588"}],"wp:attachment":[{"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/media?parent=97719"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/categories?post=97719"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/tags?post=97719"},{"taxonomy":"contributors-categories","embeddable":true,"href":"https:\/\/ibkrcampus.com\/campus\/wp-json\/wp\/v2\/contributors-categories?post=97719"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}