{"id":102165,"date":"2020-02-21T10:00:23","date_gmt":"2020-02-21T08:00:23","guid":{"rendered":"https:\/\/www.javacodegeeks.com\/?p=102165"},"modified":"2020-02-19T12:43:56","modified_gmt":"2020-02-19T10:43:56","slug":"using-json-schema-validation-to-map-sparse-json","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html","title":{"rendered":"Using JSON Schema Validation to Map Sparse JSON"},"content":{"rendered":"<p>In this post, we\u2019ll look at a problem that comes up when you create APIs and share them. In particular, there\u2019s a need to:<\/p>\n<ul class=\"wp-block-list\">\n<li>Express the structure of data<\/li>\n<li>Provide for validation of that data<\/li>\n<li>Allow for future changes of mind<\/li>\n<li>Communicate with clients over a subset of the data you have<\/li>\n<li>Fill in the blanks when data is missing<\/li>\n<\/ul>\n<p>People generally solve this with version numbered APIs. Each version of the API is bound to a schema. The schema is often expressed in <a href=\"https:\/\/json-schema.org\/\">JSON Schema<\/a> format.<\/p>\n<p>Evolving between multiple versions of the same schema is not supported by the above supporting libraries.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"686\" src=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2020\/02\/photo-1522346513757-54c552451fdc-1024x686.jpg\" alt=\"\" class=\"wp-image-102181\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2020\/02\/photo-1522346513757-54c552451fdc-1024x686.jpg 1024w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2020\/02\/photo-1522346513757-54c552451fdc-300x201.jpg 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2020\/02\/photo-1522346513757-54c552451fdc-768x514.jpg 768w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2020\/02\/photo-1522346513757-54c552451fdc.jpg 1047w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n<p>Schema evolution can be supported quite well by <a href=\"https:\/\/avro.apache.org\/\">Apache Avro<\/a>. Avro can have its schemas defined using something akin to JSON Schema, and is able to read and write JSON, though you need <a href=\"https:\/\/github.com\/allegro\/json-avro-converter\">JSON2AvroConverter<\/a> to read normal-looking JSON if you\u2019re using nullable fields via the <em>union<\/em> type in Avro.<\/p>\n<p>However, Avro isn\u2019t great at reading JSON with missing fields.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p>Draft 7 of the JSON Schema supports defaults and the <a href=\"https:\/\/github.com\/everit-org\/json-schema\"><em>everit <\/em>json-schema<\/a> library can substitute defaults into objects while validating.<\/p>\n<h2 class=\"wp-block-heading\">Putting this together<\/h2>\n<p>Let\u2019s say:<\/p>\n<ul class=\"wp-block-list\">\n<li>I have a schema which supplies defaults for anything that is not mandatory<\/li>\n<li>I have a rule that no future version of a schema can add mandatory things<\/li>\n<li>I have data which has whichever fields it has been given, regardless of whether they\u2019re needed by a specific version of the schema<\/li>\n<li>I wish to return data valid against a particular schema version<\/li>\n<\/ul>\n<p>I will need to:<\/p>\n<ul class=\"wp-block-list\">\n<li>Filter out fields that are in the source, but not in the schema<\/li>\n<li>Add defaults when a field is in the schema but not in the data<\/li>\n<\/ul>\n<p>All of the above is <a href=\"https:\/\/github.com\/ashleyfrieze\/json-schema-filter\">explored in this POC <\/a>on GitHub.<\/p>\n<h2 class=\"wp-block-heading\">The POC<\/h2>\n<p>The POC uses the <em>everit <\/em>library to populate defaults, and demonstrates how to express defaults in schemas.<\/p>\n<p>It\u2019s a bit annoying to express JSON inside Java code, so the best thing to do is extract the test of the schema and explore it in a tool like <a href=\"https:\/\/jsoneditoronline.org\/\">JSONEditorOnline<\/a>. (Hopefully your IDE will unescape the <code>\"<\/code> characters when you copy and paste \u2013 IntelliJ does.)<\/p>\n<p>The POC has a basic implementation for iterating over both the schema and the input JSON, removing fields in the JSON that are not known to the schema. The reason this is basic is that it does not cope with edge cases possible in JSON Schema, and it does not tolerate data being of a different type in the input JSON than described by the schema.<\/p>\n<p>That said, it passes some useful tests, so it\u2019s definitely a starting point for future investigation.<\/p>\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n<p>Schema evolution can be done very precisely. Apache Avro allows for modeling of multiple versions of the same schema, loading in one and transforming to another, but it\u2019s not a great friend of JSON and requires the source JSON to be in the right format for one of the schemas.<\/p>\n<p>JSON Schema is a fundamental building block of REST API definition. It can be coerced into operating as a filter on top of the ability to use it to supply defaults during validation if used with the right libraries.<\/p>\n<p>I hope the POC code here proves useful to someone.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>\n<p>Published on Java Code Geeks with permission by Ashley Frieze, partner at our <a href=\"\/\/www.javacodegeeks.com\/join-us\/jcg\/\" target=\"_blank\" rel=\"noopener noreferrer\">JCG program<\/a>. See the original article here: <a href=\"https:\/\/codingcraftsman.wordpress.com\/2020\/02\/02\/using-json-schema-validation-to-map-sparse-json\/\" target=\"_blank\" rel=\"noopener noreferrer\">Using JSON Schema Validation to Map Sparse JSON<\/a><\/p>\n<p>Opinions expressed by Java Code Geeks contributors are their own.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this post, we\u2019ll look at a problem that comes up when you create APIs and share them. In particular, there\u2019s a need to: Express the structure of data Provide for validation of that data Allow for future changes of mind Communicate with clients over a subset of the data you have Fill in the &hellip;<\/p>\n","protected":false},"author":99480,"featured_media":112,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-102165","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Using JSON Schema Validation to Map Sparse JSON - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"Interested to learn about JSON Schema? Check our article presenting a problem that comes up when you create APIs and share them.\" \/>\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.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using JSON Schema Validation to Map Sparse JSON - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"Interested to learn about JSON Schema? Check our article presenting a problem that comes up when you create APIs and share them.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2020-02-21T08:00:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Ashley Frieze\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ashley Frieze\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/02\\\/using-json-schema-validation-to-map-sparse-json.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/02\\\/using-json-schema-validation-to-map-sparse-json.html\"},\"author\":{\"name\":\"Ashley Frieze\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/85dca06872d91344dfc0c5945df7b6f2\"},\"headline\":\"Using JSON Schema Validation to Map Sparse JSON\",\"datePublished\":\"2020-02-21T08:00:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/02\\\/using-json-schema-validation-to-map-sparse-json.html\"},\"wordCount\":592,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/02\\\/using-json-schema-validation-to-map-sparse-json.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/02\\\/using-json-schema-validation-to-map-sparse-json.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/02\\\/using-json-schema-validation-to-map-sparse-json.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/02\\\/using-json-schema-validation-to-map-sparse-json.html\",\"name\":\"Using JSON Schema Validation to Map Sparse JSON - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/02\\\/using-json-schema-validation-to-map-sparse-json.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/02\\\/using-json-schema-validation-to-map-sparse-json.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"datePublished\":\"2020-02-21T08:00:23+00:00\",\"description\":\"Interested to learn about JSON Schema? Check our article presenting a problem that comes up when you create APIs and share them.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/02\\\/using-json-schema-validation-to-map-sparse-json.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/02\\\/using-json-schema-validation-to-map-sparse-json.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/02\\\/using-json-schema-validation-to-map-sparse-json.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"width\":150,\"height\":150,\"caption\":\"java-interview-questions-answers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2020\\\/02\\\/using-json-schema-validation-to-map-sparse-json.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Using JSON Schema Validation to Map Sparse JSON\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/85dca06872d91344dfc0c5945df7b6f2\",\"name\":\"Ashley Frieze\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d753fc078e89e8592e03ff7a6420076b218f9979578b537d0434a60274d9c557?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d753fc078e89e8592e03ff7a6420076b218f9979578b537d0434a60274d9c557?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d753fc078e89e8592e03ff7a6420076b218f9979578b537d0434a60274d9c557?s=96&d=mm&r=g\",\"caption\":\"Ashley Frieze\"},\"description\":\"Software developer, stand-up comedian, musician, writer, jolly big cheer-monkey, skeptical thinker, Doctor Who fan, lover of fine sounds\",\"sameAs\":[\"https:\\\/\\\/codingcraftsman.wordpress.com\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/ashley-frieze\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Using JSON Schema Validation to Map Sparse JSON - Java Code Geeks","description":"Interested to learn about JSON Schema? Check our article presenting a problem that comes up when you create APIs and share them.","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.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html","og_locale":"en_US","og_type":"article","og_title":"Using JSON Schema Validation to Map Sparse JSON - Java Code Geeks","og_description":"Interested to learn about JSON Schema? Check our article presenting a problem that comes up when you create APIs and share them.","og_url":"https:\/\/www.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2020-02-21T08:00:23+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","type":"image\/jpeg"}],"author":"Ashley Frieze","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Ashley Frieze","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html"},"author":{"name":"Ashley Frieze","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/85dca06872d91344dfc0c5945df7b6f2"},"headline":"Using JSON Schema Validation to Map Sparse JSON","datePublished":"2020-02-21T08:00:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html"},"wordCount":592,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html","url":"https:\/\/www.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html","name":"Using JSON Schema Validation to Map Sparse JSON - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","datePublished":"2020-02-21T08:00:23+00:00","description":"Interested to learn about JSON Schema? Check our article presenting a problem that comes up when you create APIs and share them.","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","width":150,"height":150,"caption":"java-interview-questions-answers"},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2020\/02\/using-json-schema-validation-to-map-sparse-json.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"Using JSON Schema Validation to Map Sparse JSON"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/85dca06872d91344dfc0c5945df7b6f2","name":"Ashley Frieze","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d753fc078e89e8592e03ff7a6420076b218f9979578b537d0434a60274d9c557?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d753fc078e89e8592e03ff7a6420076b218f9979578b537d0434a60274d9c557?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d753fc078e89e8592e03ff7a6420076b218f9979578b537d0434a60274d9c557?s=96&d=mm&r=g","caption":"Ashley Frieze"},"description":"Software developer, stand-up comedian, musician, writer, jolly big cheer-monkey, skeptical thinker, Doctor Who fan, lover of fine sounds","sameAs":["https:\/\/codingcraftsman.wordpress.com"],"url":"https:\/\/www.javacodegeeks.com\/author\/ashley-frieze"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/102165","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/99480"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=102165"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/102165\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/112"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=102165"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=102165"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=102165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}