{"id":21630,"date":"2018-05-09T12:15:41","date_gmt":"2018-05-09T09:15:41","guid":{"rendered":"https:\/\/www.webcodegeeks.com\/?p=21630"},"modified":"2018-05-09T11:37:48","modified_gmt":"2018-05-09T08:37:48","slug":"working-with-json-in-scala-js","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/","title":{"rendered":"Working with JSON in Scala.js"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>Working with JSON is almost inevitable regardless of the environment. In this post, we will go through different ways of serializing\/deserializing (or encoding\/decoding as some may call it) objects from\/to JSON in Scala.js. As of the date this post is written, there are three main tools that convert objects to\/from JSON:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/lihaoyi\/upickle\">uPickle<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/circe\/circe\">Circe<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/scala-js\/scala-js-dom\">scalajs-dom<\/a> (using JSON.stringify() and parse())<\/li>\n<\/ul>\n<p>We will use the following object for all the examples for uPickle and Circe:<\/p>\n<pre class=\"brush:scala\">case class Car(id: String, brand: String, model: String) {}<\/pre>\n<p>using scalajs-dom requires a slight modification to the object as only <code>js.Object<\/code> is allowed<\/p>\n<pre class=\"brush:scala\">class Car extends js.Object {\r\n  var id: String = _\r\n  var brand: String = _\r\n  var model: String = _\r\n}<\/pre>\n<h2>Serializing<\/h2>\n<ul>\n<li>uPickle:<\/li>\n<\/ul>\n<p>Using uPickle, it is enough to create an object that configures the types to be read\/written :<\/p>\n<pre class=\"brush:scala\">import upickle.default.{ReadWriter =&gt; RW, macroRW}\r\n\r\nobject Car{\r\n  implicit def rw: RW[Car] = macroRW\r\n}<\/pre>\n<p>and then:<\/p>\n<pre class=\"brush:scala\">val mercedes = new Car(\"1\", \"Mercedes\", \"2015\")\r\n    \r\n    val mercedesJSON = write[Car](mercedes)\r\n\r\n     println(mercedesJSON)\r\n\r\n     \/\/result: {\"id\":\"1\",\"brand\":\"Mercedes\",\"model\":\"2015\"}<\/pre>\n<ul>\n<li>Circe:<\/li>\n<\/ul>\n<p>Circe requires the configuration of encoders\/decoders:<\/p>\n<pre class=\"brush:scala\">import io.circe.{Decoder, Encoder}\r\nimport io.circe.generic.semiauto._\r\n\r\nobject Expense {\r\n  implicit val carDecoder: Decoder[Car] = deriveDecoder\r\n  implicit val carEncoder: Encoder[Car] = deriveEncoder\r\n}<\/pre>\n<p>and then:<\/p>\n<pre class=\"brush:scala\">import io.circe.syntax._\r\n\r\n    val mercedes = new Car(\"1\", \"Mercedes\", \"2015\")\r\n\r\n    val mercedesJSON = mercedes.asJson\r\n\r\n    println(mercedes.asJson)\r\n     \r\n     \/\/result is indented by default &amp;#55357;&amp;#56898; for making the output oneline : .asJson.noSpaces\r\n     \/*  {\r\n      \"id\": \"1\",\r\n      \"brand\": \"Mercedes\",\r\n      \"model\": \"2015\"\r\n      }\r\n      *\/<\/pre>\n<ul>\n<li>scalajs-dom:<\/li>\n<\/ul>\n<p>using <code>scalajs-dom<\/code> requires the addition of <code>scalacOptions += \"-P:scalajs:sjsDefinedByDefault\"<\/code> to the build file, since <code>@ScalaJSDefined<\/code> is meant to be deprecated.<\/p>\n<p>and then :<\/p>\n<pre class=\"brush:scala\">val mercedes = new Car()\r\n    mercedes.id = \"10\"\r\n    mercedes.model = \"1980\"\r\n    mercedes.brand = \"Mercedes\"\r\n    println(JSON.stringify(mercedes))\r\n\r\n    \/\/result: {\"id\":\"10\",\"brand\":\"Mercedes\",\"model\":\"1980\"}<\/pre>\n<h2>Deserializing<\/h2>\n<ul>\n<li>uPickle:<\/li>\n<\/ul>\n<pre class=\"brush:scala\">val mercedesJSON = \"\"\"{\"id\":\"10\",\"brand\":\"Mercedes\",\"model\":\"1980\"}\"\"\"\r\n    val mercedes = read[Car](mercedesJSON)\r\n    println(mercedes.id)\r\n    \/\/ 10\r\n    println(mercedes.model)\r\n    \/\/  1980\r\n    println(mercedes.brand)\r\n    \/\/ Mercedes<\/pre>\n<ul>\n<li>Circe:<\/li>\n<\/ul>\n<pre class=\"brush:scala\">val mercedesJSON = \"\"\"{\"id\":\"10\",\"brand\":\"Mercedes\",\"model\":\"1980\"}\"\"\"\r\n    val mercedes = decode[Car](mercedesJSON).toTry.get\r\n    println(mercedes.id)\r\n    \/\/ 10\r\n    println(mercedes.model)\r\n    \/\/  1980\r\n    println(mercedes.brand)\r\n    \/\/ Mercedes<\/pre>\n<ul>\n<li>scalajs-dom:<\/li>\n<\/ul>\n<pre class=\"brush:scala\">val mercedesJSON = \"\"\"{\"id\":\"10\",\"brand\":\"Mercedes\",\"model\":\"1980\"}\"\"\"\r\n    val mercedes = JSON.parse(mercedesJSON).asInstanceOf[Car]\r\n    println(mercedes.id)\r\n    \/\/ 10\r\n    println(mercedes.model)\r\n    \/\/  1980\r\n    println(mercedes.brand)\r\n    \/\/ Mercedes<\/pre>\n<h2>Wrap up<\/h2>\n<p>We have walked through different libraries that allow serializing\/deserializing JSON in Scala.Js. All the methods work in pretty much the same way, so there is no preferred way. The choice is left to the developer.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>Published on Web Code Geeks with permission by Zakaria Amine, partner at our <a href=\"\/\/www.webcodegeeks.com\/join-us\/wcg\/\" target=\"_blank\" rel=\"noopener\">WCG program<\/a>. See the original article here: <a href=\"http:\/\/www.g-widgets.com\/2018\/05\/08\/working-with-json-in-scala-js\/\" target=\"_blank\" rel=\"noopener\">Working with JSON in Scala.js<\/a><\/p>\n<p>Opinions expressed by Web Code Geeks contributors are their own.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Working with JSON is almost inevitable regardless of the environment. In this post, we will go through different ways of serializing\/deserializing (or encoding\/decoding as some may call it) objects from\/to JSON in Scala.js. As of the date this post is written, there are three main tools that convert objects to\/from JSON: uPickle Circe scalajs-dom &hellip;<\/p>\n","protected":false},"author":4470,"featured_media":920,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[115],"class_list":["post-21630","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","tag-scala-js"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Working with JSON in Scala.js - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"Introduction Working with JSON is almost inevitable regardless of the environment. In this post, we will go through different ways of\" \/>\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.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Working with JSON in Scala.js - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"Introduction Working with JSON is almost inevitable regardless of the environment. In this post, we will go through different ways of\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2018-05-09T09:15:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-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=\"Zakaria Amine\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Zakaria Amine\" \/>\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\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/\"},\"author\":{\"name\":\"Zakaria Amine\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/ce5305c30531ff9e0144e637858512c5\"},\"headline\":\"Working with JSON in Scala.js\",\"datePublished\":\"2018-05-09T09:15:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/\"},\"wordCount\":226,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\",\"keywords\":[\"Scala.js\"],\"articleSection\":[\"JavaScript\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/\",\"name\":\"Working with JSON in Scala.js - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\",\"datePublished\":\"2018-05-09T09:15:41+00:00\",\"description\":\"Introduction Working with JSON is almost inevitable regardless of the environment. In this post, we will go through different ways of\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/javascript\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Working with JSON in Scala.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"name\":\"Web Code Geeks\",\"description\":\"Web Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webcodegeeks\",\"https:\/\/x.com\/webcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/ce5305c30531ff9e0144e637858512c5\",\"name\":\"Zakaria Amine\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f57181b135803b2a4b6f52e1b555b6f969d1e28d098fb9f61ab466d7ed368d94?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f57181b135803b2a4b6f52e1b555b6f969d1e28d098fb9f61ab466d7ed368d94?s=96&d=mm&r=g\",\"caption\":\"Zakaria Amine\"},\"description\":\"Zakaria is a freelance software engineer who enjoys working with Java web frameworks, and microservice architectures. During his free time, Zakaria works on hobby projects, and blogs about his favorite topics like GWT and Spring.\",\"sameAs\":[\"http:\/\/www.g-widgets.com\"],\"url\":\"https:\/\/www.webcodegeeks.com\/author\/zakaria-amine\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Working with JSON in Scala.js - Web Code Geeks - 2026","description":"Introduction Working with JSON is almost inevitable regardless of the environment. In this post, we will go through different ways of","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.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/","og_locale":"en_US","og_type":"article","og_title":"Working with JSON in Scala.js - Web Code Geeks - 2026","og_description":"Introduction Working with JSON is almost inevitable regardless of the environment. In this post, we will go through different ways of","og_url":"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2018-05-09T09:15:41+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","type":"image\/jpeg"}],"author":"Zakaria Amine","twitter_card":"summary_large_image","twitter_creator":"@webcodegeeks","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Zakaria Amine","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/"},"author":{"name":"Zakaria Amine","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/ce5305c30531ff9e0144e637858512c5"},"headline":"Working with JSON in Scala.js","datePublished":"2018-05-09T09:15:41+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/"},"wordCount":226,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","keywords":["Scala.js"],"articleSection":["JavaScript"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/","url":"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/","name":"Working with JSON in Scala.js - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","datePublished":"2018-05-09T09:15:41+00:00","description":"Introduction Working with JSON is almost inevitable regardless of the environment. In this post, we will go through different ways of","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/js-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.webcodegeeks.com\/javascript\/working-with-json-in-scala-js\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"JavaScript","item":"https:\/\/www.webcodegeeks.com\/category\/javascript\/"},{"@type":"ListItem","position":3,"name":"Working with JSON in Scala.js"}]},{"@type":"WebSite","@id":"https:\/\/www.webcodegeeks.com\/#website","url":"https:\/\/www.webcodegeeks.com\/","name":"Web Code Geeks","description":"Web Developers Resource Center","publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.webcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webcodegeeks","https:\/\/x.com\/webcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/ce5305c30531ff9e0144e637858512c5","name":"Zakaria Amine","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/f57181b135803b2a4b6f52e1b555b6f969d1e28d098fb9f61ab466d7ed368d94?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f57181b135803b2a4b6f52e1b555b6f969d1e28d098fb9f61ab466d7ed368d94?s=96&d=mm&r=g","caption":"Zakaria Amine"},"description":"Zakaria is a freelance software engineer who enjoys working with Java web frameworks, and microservice architectures. During his free time, Zakaria works on hobby projects, and blogs about his favorite topics like GWT and Spring.","sameAs":["http:\/\/www.g-widgets.com"],"url":"https:\/\/www.webcodegeeks.com\/author\/zakaria-amine\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/21630","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/users\/4470"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=21630"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/21630\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/920"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=21630"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=21630"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=21630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}