{"id":2082,"date":"2018-11-16T14:02:32","date_gmt":"2018-11-16T22:02:32","guid":{"rendered":"https:\/\/app.works\/?p=2082"},"modified":"2022-08-03T09:51:57","modified_gmt":"2022-08-03T16:51:57","slug":"parsingmethodsforjsonparameters","status":"publish","type":"post","link":"https:\/\/app.works\/parsingmethodsforjsonparameters\/","title":{"rendered":"Parsing Methods for JSON Parameters"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Here at AppWorks we\u2019ve been revamping some of our popular (<\/span><i><span style=\"font-weight: 400;\">and free!<\/span><\/i><span style=\"font-weight: 400;\">) downloadable modules with FileMaker\u2019s native JSON functionality. But why stop there? The more JSON the better. <\/span><\/p>\n<p><b>Why do we love JSON so much? <\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">It\u2019s human-readable and easy to write<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">It\u2019s lightweight and flexible<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">It\u2019ll make your API Integrations even easier to implement<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">It makes <a href=\"https:\/\/app.works\/passing-multiple-parameters-natively-in-filemaker-16-using-json\/\">multiple parameter passing<\/a> more robust and reliable<\/span><\/li>\n<\/ul>\n<p><!--more--><\/p>\n<p><span style=\"font-weight: 400;\">The benefits of developing with JSON and its applications are endless, but I\u2019ll be focusing on my personal favorite &#8211; script parameters. Before native JSON functionality was released, many tricks and workarounds were used to pass multiple parameters into a script using the <\/span><i><span style=\"font-weight: 400;\">single<\/span><\/i><span style=\"font-weight: 400;\"> parameter field we are given. Some were more reliable than others, but overall this was not ideal.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">With JSON we can leverage it\u2019s lightweight and flexible syntax to reliably pass a set of parameters that can be as simple or complex as needed. If you\u2019re like me however, you may find <a href=\"https:\/\/app.works\/automatically-parse-a-json-script-parameter\/\">parsing JSON parameters<\/a> is a bit tedious. To help alleviate some of the repetitive code required to parse out each JSON element into variables, I\u2019ve created two methods to handle the parsing. Both of these methods use a \u2018Let\u2019 statement along with the \u2018Evaluate\u2019 function and can easily be copied into any script. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Note: The parsing methods below only parse the top-level JSON keys. <\/span><\/p>\n<p><b>Method 1: Scripted Loop<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Using only eight lines of code we can quickly loop through a JSON object to instantiate as many variables as we need. Although this may seem like a lot of code to parse only two or three variables, it\u2019s true value is in it\u2019s reusability and flexibility. These script steps can be copied\/pasted into EVERY script and work, and it will continue to work without any extra scripting when two variables suddenly become ten. The screenshot below will show you how to setup your loop. <\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-2083\" src=\"https:\/\/app.works\/wp-content\/uploads\/2018\/11\/JSON-Screenshot.png\" alt=\"\" width=\"792\" height=\"647\" srcset=\"https:\/\/app.works\/wp-content\/uploads\/2018\/11\/JSON-Screenshot.png 792w, https:\/\/app.works\/wp-content\/uploads\/2018\/11\/JSON-Screenshot-600x490.png 600w\" sizes=\"(max-width: 792px) 100vw, 792px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">The variable called $parse is where the local variables are created:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Let ( [<\/span><\/p>\n<p><span style=\"font-weight: 400;\">list = JSONListKeys ( $raw ; &#8220;&#8221; ) ;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">key = GetValue ( list ; $i ) ;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">value = JSONGetElement ( $raw ; key ) ;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">error = &#8220;$error=\\&#8221;Invalid JSON\\&#8221;&#8221; ;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">JSONerror = Case (Left(JSONFormatElements($raw) ; 1 ) = &#8220;?&#8221; ; 1 ; 0) <\/span><\/p>\n<p><span style=\"font-weight: 400;\">];<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Case (<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0\/\/Error was found<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0JSONerror = 1 ; <\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0Evaluate(&#8220;Let ( &#8221; &amp; error &amp; \u00a0&#8221; ; \\&#8221;\\&#8221; )&#8221; ) ;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0\/\/Create local variable<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0Let ( eval = Evaluate(&#8220;Let ( [ $&#8221; &amp; key &amp; \u00a0&#8220;=\\&#8221;&#8221; &amp; value &amp; &#8220;\\&#8221;] ; \\&#8221;\\&#8221; )&#8221; ) ; &#8220;&#8221; ) <\/span><\/p>\n<p><span style=\"font-weight: 400;\">) \/\/end Case statement<\/span><\/p>\n<p><span style=\"font-weight: 400;\">) \/\/end Let statement<\/span><\/p>\n<p><b>Method 2: Custom Function<\/b><\/p>\n<p><span style=\"font-weight: 400;\">After writing my own custom function I decided to search the <a href=\"https:\/\/app.works\/community\/\">FileMaker community<\/a> for one because surely someone else MUST have created one already. There may be more, but I was able to find at least one published by Mislav Kos of Soliant Consulting. It can be found on <\/span><a href=\"https:\/\/www.briandunning.com\/filemaker-custom-functions\/\"><span style=\"font-weight: 400;\">Brian Dunning\u2019s FileMaker Custom Functions<\/span><\/a><span style=\"font-weight: 400;\"> website <\/span><a href=\"https:\/\/www.briandunning.com\/cf\/2088\"><span style=\"font-weight: 400;\">here<\/span><\/a><span style=\"font-weight: 400;\">. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">The benefit of the custom function is that my eight lines of code from the scripted loop turned into a single line. So while custom functions are more difficult to debug, I personally enjoy watching a ton of variables being created in a single script step. So without further ado, here it is:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\/*<\/span><\/p>\n<p><span style=\"font-weight: 400;\">JPP ( json )<\/span><\/p>\n<p><span style=\"font-weight: 400;\">PARAMETERS:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">json &#8211; JSON object<\/span><\/p>\n<p><span style=\"font-weight: 400;\">PURPOSE:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Creates local variables for each top-level JSON key.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">OUTPUT:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Local variables created from the top-level keys of the <a href=\"https:\/\/app.works\/step-by-step-guide-to-building-a-json-object-in-filemaker\/\">JSON object<\/a><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Errors will produce a variable called $error when the JSON is invalid<\/span><\/p>\n<p><span style=\"font-weight: 400;\">and a variable called $raw with the raw text.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">HISTORY:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Created on 2018-10-31 by Michelle Davison <\/span><\/p>\n<p><span style=\"font-weight: 400;\">*\/<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Let ( [<\/span><\/p>\n<p><span style=\"font-weight: 400;\">list = JSONListKeys ( json; &#8220;&#8221; ) ;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">key = GetValue ( list ; ValueCount(list) ) ;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">value = JSONGetElement ( json; key ) ;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">raw = &#8220;$raw=\\&#8221;&#8221; &amp; json &amp; &#8220;\\&#8221;&#8221; ;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">error = &#8220;$error=\\&#8221;Invalid JSON\\&#8221;;\u00b6&#8221; ;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">JSONerror = Case (Left(JSONFormatElements(json) ; 1 ) = &#8220;?&#8221; ; 1 ; 0) <\/span><\/p>\n<p><span style=\"font-weight: 400;\">];<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Case (<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0\/\/Error was found<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0JSONerror = 1 ; <\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0Evaluate(&#8220;Let ( [ &#8221; &amp; error &amp; raw \u00a0&amp; &#8220;] ; \\&#8221;\\&#8221; )&#8221; ) ;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0\/\/Create a local variable and call this function again to continue until no keys remain<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0ValueCount(list) \u00a0&gt; 0 ; <\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0Let ( [ <\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 eval = Evaluate(&#8220;Let ( [ $&#8221; &amp; key &amp; \u00a0&#8220;=\\&#8221;&#8221; &amp; value &amp; &#8220;\\&#8221;] ; \\&#8221;\\&#8221; )&#8221; ) ; <\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 json = JSONDeleteElement ( json; key ) <\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0]; \u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 JPP (json) <\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0) ;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0&#8220;&#8221; \u00a0\/\/Finish when the loop is complete<\/span><\/p>\n<p><span style=\"font-weight: 400;\">) \/\/end of Case statement<\/span><\/p>\n<p><span style=\"font-weight: 400;\">) \/\/end of Let statement<\/span><\/p>\n<p><b>Conclusion<\/b><\/p>\n<p><span style=\"font-weight: 400;\">What have you found JSON to be the most useful for? <\/span><!--more--><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here at AppWorks we\u2019ve been revamping some of our popular (and free!) downloadable modules with FileMaker\u2019s native JSON functionality. But why stop there? The more JSON the better. Why do we love JSON so much? It\u2019s human-readable and easy to write It\u2019s lightweight and flexible It\u2019ll make your API Integrations even easier to implement It [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[40],"tags":[120,107,151,149,110,173,175,235,234],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>Parsing Methods for JSON Parameters - AppWorks<\/title>\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:\/\/app.works\/parsingmethodsforjsonparameters\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Parsing Methods for JSON Parameters - AppWorks\" \/>\r\n<meta property=\"og:description\" content=\"Here at AppWorks we\u2019ve been revamping some of our popular (and free!) downloadable modules with FileMaker\u2019s native JSON functionality. But why stop there? The more JSON the better. Why do we love JSON so much? It\u2019s human-readable and easy to write It\u2019s lightweight and flexible It\u2019ll make your API Integrations even easier to implement It [&hellip;]\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/app.works\/parsingmethodsforjsonparameters\/\" \/>\r\n<meta property=\"og:site_name\" content=\"AppWorks\" \/>\r\n<meta property=\"article:published_time\" content=\"2018-11-16T22:02:32+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2022-08-03T16:51:57+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/app.works\/wp-content\/uploads\/2018\/11\/JSON-Screenshot.png\" \/>\r\n<meta name=\"author\" content=\"Michelle Davison\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Michelle Davison\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/app.works\/parsingmethodsforjsonparameters\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/app.works\/parsingmethodsforjsonparameters\/\"},\"author\":{\"name\":\"Michelle Davison\",\"@id\":\"https:\/\/www.app.works\/#\/schema\/person\/b531c9f3d18bd29d0b219de23f840fbd\"},\"headline\":\"Parsing Methods for JSON Parameters\",\"datePublished\":\"2018-11-16T22:02:32+00:00\",\"dateModified\":\"2022-08-03T16:51:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/app.works\/parsingmethodsforjsonparameters\/\"},\"wordCount\":661,\"publisher\":{\"@id\":\"https:\/\/www.app.works\/#organization\"},\"keywords\":[\"API\",\"custom software\",\"FileMaker API\",\"FileMaker Data API\",\"filemaker json\",\"function\",\"JSON\",\"JSON parsing\",\"script parameters\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/app.works\/parsingmethodsforjsonparameters\/\",\"url\":\"https:\/\/app.works\/parsingmethodsforjsonparameters\/\",\"name\":\"Parsing Methods for JSON Parameters - AppWorks\",\"isPartOf\":{\"@id\":\"https:\/\/www.app.works\/#website\"},\"datePublished\":\"2018-11-16T22:02:32+00:00\",\"dateModified\":\"2022-08-03T16:51:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/app.works\/parsingmethodsforjsonparameters\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/app.works\/parsingmethodsforjsonparameters\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/app.works\/parsingmethodsforjsonparameters\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.app.works\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Parsing Methods for JSON Parameters\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.app.works\/#website\",\"url\":\"https:\/\/www.app.works\/\",\"name\":\"AppWorks\",\"description\":\"Designing Smart Apps Geared to Work for You\",\"publisher\":{\"@id\":\"https:\/\/www.app.works\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.app.works\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.app.works\/#organization\",\"name\":\"AppWorks\",\"url\":\"https:\/\/www.app.works\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.app.works\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/app.works\/wp-content\/uploads\/2021\/02\/cropped-logo-aw-dis-big-1.png\",\"contentUrl\":\"https:\/\/app.works\/wp-content\/uploads\/2021\/02\/cropped-logo-aw-dis-big-1.png\",\"width\":175,\"height\":67,\"caption\":\"AppWorks\"},\"image\":{\"@id\":\"https:\/\/www.app.works\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.app.works\/#\/schema\/person\/b531c9f3d18bd29d0b219de23f840fbd\",\"name\":\"Michelle Davison\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.app.works\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8b16e0ccbdae0098ea150d0e6b53b215?s=96&d=identicon&r=pg\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8b16e0ccbdae0098ea150d0e6b53b215?s=96&d=identicon&r=pg\",\"caption\":\"Michelle Davison\"},\"sameAs\":[\"https:\/\/app.works\"],\"url\":\"https:\/\/app.works\/author\/michelle\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Parsing Methods for JSON Parameters - AppWorks","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:\/\/app.works\/parsingmethodsforjsonparameters\/","og_locale":"en_US","og_type":"article","og_title":"Parsing Methods for JSON Parameters - AppWorks","og_description":"Here at AppWorks we\u2019ve been revamping some of our popular (and free!) downloadable modules with FileMaker\u2019s native JSON functionality. But why stop there? The more JSON the better. Why do we love JSON so much? It\u2019s human-readable and easy to write It\u2019s lightweight and flexible It\u2019ll make your API Integrations even easier to implement It [&hellip;]","og_url":"https:\/\/app.works\/parsingmethodsforjsonparameters\/","og_site_name":"AppWorks","article_published_time":"2018-11-16T22:02:32+00:00","article_modified_time":"2022-08-03T16:51:57+00:00","og_image":[{"url":"https:\/\/app.works\/wp-content\/uploads\/2018\/11\/JSON-Screenshot.png"}],"author":"Michelle Davison","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Michelle Davison","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/app.works\/parsingmethodsforjsonparameters\/#article","isPartOf":{"@id":"https:\/\/app.works\/parsingmethodsforjsonparameters\/"},"author":{"name":"Michelle Davison","@id":"https:\/\/www.app.works\/#\/schema\/person\/b531c9f3d18bd29d0b219de23f840fbd"},"headline":"Parsing Methods for JSON Parameters","datePublished":"2018-11-16T22:02:32+00:00","dateModified":"2022-08-03T16:51:57+00:00","mainEntityOfPage":{"@id":"https:\/\/app.works\/parsingmethodsforjsonparameters\/"},"wordCount":661,"publisher":{"@id":"https:\/\/www.app.works\/#organization"},"keywords":["API","custom software","FileMaker API","FileMaker Data API","filemaker json","function","JSON","JSON parsing","script parameters"],"articleSection":["Blog"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/app.works\/parsingmethodsforjsonparameters\/","url":"https:\/\/app.works\/parsingmethodsforjsonparameters\/","name":"Parsing Methods for JSON Parameters - AppWorks","isPartOf":{"@id":"https:\/\/www.app.works\/#website"},"datePublished":"2018-11-16T22:02:32+00:00","dateModified":"2022-08-03T16:51:57+00:00","breadcrumb":{"@id":"https:\/\/app.works\/parsingmethodsforjsonparameters\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/app.works\/parsingmethodsforjsonparameters\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/app.works\/parsingmethodsforjsonparameters\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.app.works\/"},{"@type":"ListItem","position":2,"name":"Parsing Methods for JSON Parameters"}]},{"@type":"WebSite","@id":"https:\/\/www.app.works\/#website","url":"https:\/\/www.app.works\/","name":"AppWorks","description":"Designing Smart Apps Geared to Work for You","publisher":{"@id":"https:\/\/www.app.works\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.app.works\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.app.works\/#organization","name":"AppWorks","url":"https:\/\/www.app.works\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.app.works\/#\/schema\/logo\/image\/","url":"https:\/\/app.works\/wp-content\/uploads\/2021\/02\/cropped-logo-aw-dis-big-1.png","contentUrl":"https:\/\/app.works\/wp-content\/uploads\/2021\/02\/cropped-logo-aw-dis-big-1.png","width":175,"height":67,"caption":"AppWorks"},"image":{"@id":"https:\/\/www.app.works\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.app.works\/#\/schema\/person\/b531c9f3d18bd29d0b219de23f840fbd","name":"Michelle Davison","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.app.works\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8b16e0ccbdae0098ea150d0e6b53b215?s=96&d=identicon&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8b16e0ccbdae0098ea150d0e6b53b215?s=96&d=identicon&r=pg","caption":"Michelle Davison"},"sameAs":["https:\/\/app.works"],"url":"https:\/\/app.works\/author\/michelle\/"}]}},"_links":{"self":[{"href":"https:\/\/app.works\/wp-json\/wp\/v2\/posts\/2082"}],"collection":[{"href":"https:\/\/app.works\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/app.works\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/app.works\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/app.works\/wp-json\/wp\/v2\/comments?post=2082"}],"version-history":[{"count":3,"href":"https:\/\/app.works\/wp-json\/wp\/v2\/posts\/2082\/revisions"}],"predecessor-version":[{"id":9009,"href":"https:\/\/app.works\/wp-json\/wp\/v2\/posts\/2082\/revisions\/9009"}],"wp:attachment":[{"href":"https:\/\/app.works\/wp-json\/wp\/v2\/media?parent=2082"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/app.works\/wp-json\/wp\/v2\/categories?post=2082"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/app.works\/wp-json\/wp\/v2\/tags?post=2082"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}