{"id":30406,"date":"2015-12-02T15:14:34","date_gmt":"2015-12-02T09:44:34","guid":{"rendered":"https:\/\/2thenew.today\/blog\/?p=30406"},"modified":"2015-12-07T14:53:44","modified_gmt":"2015-12-07T09:23:44","slug":"javascript-to-groovy-objects-in-geb-functional-test-cases","status":"publish","type":"post","link":"https:\/\/2thenew.today\/blog\/javascript-to-groovy-objects-in-geb-functional-test-cases\/","title":{"rendered":"Javascript to groovy objects in GEB functional test cases"},"content":{"rendered":"<h2 style=\"text-align: center;\">Use Case<\/h2>\n<p>While\u00a0<a title=\"Functional Testing Services\" href=\"https:\/\/2thenew.today\/testing\/automated-independent-manual-testing\">writing functional tests<\/a> sometimes we need to test whether a certain javascript objects have some particular values.<\/p>\n<p>If we have a JavaScript object such as in our page<\/p>\n<p>[code]<br \/>\nvar myObj = { attr1 : &#8216;attr1-val&#8217;, attr2 : &#8216;attr2-val&#8217;};<br \/>\n[\/code]<\/p>\n<p>then after reaching that page we can execute the below in our GEB spec file to get that Object as a Map.<\/p>\n<p>[code]<br \/>\njs.exec(&quot;return myObj&quot;)<br \/>\n[\/code]<\/p>\n<p>Taking this object we can compare the values from some other places for validation e.g. compare with an API to make sure that the data present here matches the data being received from the server.<\/p>\n<p>But sometimes our objects may be bigger or complex. In such situation it could be better to have these objects as Groovy objects so we can easily compare them.<\/p>\n<h2 style=\"text-align: center;\">Solution<\/h2>\n<p>So we can have a class like<\/p>\n<p>[code]<br \/>\n@EqualsAndHashCode<br \/>\nclass MyArgs {<br \/>\n   String attr1<br \/>\n   String attr2<br \/>\n}<br \/>\n[\/code]<\/p>\n<p>Now we can get an object in our GEB tests by using<\/p>\n<p>[code]<br \/>\nMyArgs myArgs = js.exec(&quot;return myObj&quot;) as MyArgs<br \/>\n[\/code]<\/p>\n<h2 style=\"text-align: center;\">Problem &#8211; Extra properties in JS Object<\/h2>\n<p>But what would happen in case the JavaScript object had an extra key?<\/p>\n<p>[code]<br \/>\nvar myObj = { attr1 : &#8216;attr1-val&#8217;, attr2 : &#8216;attr2-val&#8217;, &#8216;EXTRA&#8217;: &#8216;EXTRA-VAL&#8217;};<br \/>\n[\/code]<\/p>\n<p>Our above code will break as there will be no property such as EXTRA in our MyArgs class.<\/p>\n<p>We will see something like<\/p>\n<p>[code]<br \/>\ngroovy.lang.MissingPropertyException: No such property: EXTRA for class: MyArgs<br \/>\n[\/code]<\/p>\n<h2 style=\"text-align: center;\">Solution<\/h2>\n<p>We can take care of any extra properties by using a little metaprogramming trick<\/p>\n<p>[code]<br \/>\n@EqualsAndHashCode<br \/>\nclass MyArgs {<br \/>\n   String attr1<br \/>\n   String attr2<\/p>\n<p>   def propertyMissing(String name, value){<br \/>\n        \/\/ WARNING DON&#8217;T remove this<br \/>\n    }<\/p>\n<p>}<br \/>\n[\/code]<\/p>\n<p>Now only the relevant properties will be mapped and no exception will be thrown in case extra properties are present.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Use Case While\u00a0writing functional tests sometimes we need to test whether a certain javascript objects have some particular values. If we have a JavaScript object such as in our page [code] var myObj = { attr1 : &#8216;attr1-val&#8217;, attr2 : &#8216;attr2-val&#8217;}; [\/code] then after reaching that page we can execute the below in our GEB [&hellip;]<\/p>\n","protected":false},"author":161,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":1,"footnotes":""},"categories":[1818,1],"tags":[1561,14,897,9,55],"class_list":["post-30406","post","type-post","status-publish","format-standard","hentry","category-automation-testing-testing-2","category-technology","tag-automation-testing","tag-testing","tag-geb","tag-groovy","tag-javascript"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Use Case While writing functional tests sometimes we need to test whether a certain javascript objects have some particular values. If we have a JavaScript object such as in our page [code] var myObj = { attr1 : &#039;attr1-val&#039;, attr2 : &#039;attr2-val&#039;}; [\/code] then after reaching that page we can execute the below in our GEB\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Aseem Bansal\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/2thenew.today\/blog\/javascript-to-groovy-objects-in-geb-functional-test-cases\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"TO THE NEW BLOG\" \/>\n\t\t<meta property=\"og:type\" content=\"blog\" \/>\n\t\t<meta property=\"og:title\" content=\"Javascript to groovy objects in GEB functional test cases | TO THE NEW Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"Use Case While writing functional tests sometimes we need to test whether a certain javascript objects have some particular values. If we have a JavaScript object such as in our page [code] var myObj = { attr1 : &#039;attr1-val&#039;, attr2 : &#039;attr2-val&#039;}; [\/code] then after reaching that page we can execute the below in our GEB\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/2thenew.today\/blog\/javascript-to-groovy-objects-in-geb-functional-test-cases\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/2thenew.today\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/2thenew.today\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@tothenew\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Javascript to groovy objects in GEB functional test cases | TO THE NEW Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Use Case While writing functional tests sometimes we need to test whether a certain javascript objects have some particular values. If we have a JavaScript object such as in our page [code] var myObj = { attr1 : &#039;attr1-val&#039;, attr2 : &#039;attr2-val&#039;}; [\/code] then after reaching that page we can execute the below in our GEB\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/2thenew.today\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/javascript-to-groovy-objects-in-geb-functional-test-cases\\\/#article\",\"name\":\"Javascript to groovy objects in GEB functional test cases | TO THE NEW Blog\",\"headline\":\"Javascript to groovy objects in GEB functional test cases\",\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/aseem\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"},\"datePublished\":\"2015-12-02T15:14:34+05:30\",\"dateModified\":\"2015-12-07T14:53:44+05:30\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/javascript-to-groovy-objects-in-geb-functional-test-cases\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/javascript-to-groovy-objects-in-geb-functional-test-cases\\\/#webpage\"},\"articleSection\":\"Automation Testing, Technology, automation testing, Functional Testing, Geb, Groovy, javascript\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/javascript-to-groovy-objects-in-geb-functional-test-cases\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/javascript-to-groovy-objects-in-geb-functional-test-cases\\\/#listItem\",\"name\":\"Javascript to groovy objects in GEB functional test cases\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/javascript-to-groovy-objects-in-geb-functional-test-cases\\\/#listItem\",\"position\":3,\"name\":\"Javascript to groovy objects in GEB functional test cases\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\",\"name\":\"TO THE NEW Blog\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/aseem\\\/#author\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/aseem\\\/\",\"name\":\"Aseem Bansal\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/javascript-to-groovy-objects-in-geb-functional-test-cases\\\/#authorImage\",\"url\":\"https:\\\/\\\/newersworld-sf-static.tothenew.net\\\/prod\\\/profilePicFolder\\\/03a78885-df21-4ce3-90c6-53a8b330984c_1376-Aseem-Bansal-PROFILEPICTURE.jpeg\",\"width\":96,\"height\":96,\"caption\":\"Aseem Bansal\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/javascript-to-groovy-objects-in-geb-functional-test-cases\\\/#webpage\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/javascript-to-groovy-objects-in-geb-functional-test-cases\\\/\",\"name\":\"Javascript to groovy objects in GEB functional test cases | TO THE NEW Blog\",\"description\":\"Use Case While writing functional tests sometimes we need to test whether a certain javascript objects have some particular values. If we have a JavaScript object such as in our page [code] var myObj = { attr1 : 'attr1-val', attr2 : 'attr2-val'}; [\\\/code] then after reaching that page we can execute the below in our GEB\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/javascript-to-groovy-objects-in-geb-functional-test-cases\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/aseem\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/aseem\\\/#author\"},\"datePublished\":\"2015-12-02T15:14:34+05:30\",\"dateModified\":\"2015-12-07T14:53:44+05:30\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\",\"name\":\"TO THE NEW Blog\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Javascript to groovy objects in GEB functional test cases | TO THE NEW Blog","description":"Use Case While writing functional tests sometimes we need to test whether a certain javascript objects have some particular values. If we have a JavaScript object such as in our page [code] var myObj = { attr1 : 'attr1-val', attr2 : 'attr2-val'}; [\/code] then after reaching that page we can execute the below in our GEB","canonical_url":"https:\/\/2thenew.today\/blog\/javascript-to-groovy-objects-in-geb-functional-test-cases\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/2thenew.today\/blog\/javascript-to-groovy-objects-in-geb-functional-test-cases\/#article","name":"Javascript to groovy objects in GEB functional test cases | TO THE NEW Blog","headline":"Javascript to groovy objects in GEB functional test cases","author":{"@id":"https:\/\/2thenew.today\/blog\/author\/aseem\/#author"},"publisher":{"@id":"https:\/\/2thenew.today\/blog\/#organization"},"datePublished":"2015-12-02T15:14:34+05:30","dateModified":"2015-12-07T14:53:44+05:30","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/2thenew.today\/blog\/javascript-to-groovy-objects-in-geb-functional-test-cases\/#webpage"},"isPartOf":{"@id":"https:\/\/2thenew.today\/blog\/javascript-to-groovy-objects-in-geb-functional-test-cases\/#webpage"},"articleSection":"Automation Testing, Technology, automation testing, Functional Testing, Geb, Groovy, javascript"},{"@type":"BreadcrumbList","@id":"https:\/\/2thenew.today\/blog\/javascript-to-groovy-objects-in-geb-functional-test-cases\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/2thenew.today\/blog#listItem","position":1,"name":"Home","item":"https:\/\/2thenew.today\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/2thenew.today\/blog\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/2thenew.today\/blog\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/2thenew.today\/blog\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/2thenew.today\/blog\/javascript-to-groovy-objects-in-geb-functional-test-cases\/#listItem","name":"Javascript to groovy objects in GEB functional test cases"},"previousItem":{"@type":"ListItem","@id":"https:\/\/2thenew.today\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/2thenew.today\/blog\/javascript-to-groovy-objects-in-geb-functional-test-cases\/#listItem","position":3,"name":"Javascript to groovy objects in GEB functional test cases","previousItem":{"@type":"ListItem","@id":"https:\/\/2thenew.today\/blog\/category\/technology\/#listItem","name":"Technology"}}]},{"@type":"Organization","@id":"https:\/\/2thenew.today\/blog\/#organization","name":"TO THE NEW Blog","url":"https:\/\/2thenew.today\/blog\/"},{"@type":"Person","@id":"https:\/\/2thenew.today\/blog\/author\/aseem\/#author","url":"https:\/\/2thenew.today\/blog\/author\/aseem\/","name":"Aseem Bansal","image":{"@type":"ImageObject","@id":"https:\/\/2thenew.today\/blog\/javascript-to-groovy-objects-in-geb-functional-test-cases\/#authorImage","url":"https:\/\/newersworld-sf-static.tothenew.net\/prod\/profilePicFolder\/03a78885-df21-4ce3-90c6-53a8b330984c_1376-Aseem-Bansal-PROFILEPICTURE.jpeg","width":96,"height":96,"caption":"Aseem Bansal"}},{"@type":"WebPage","@id":"https:\/\/2thenew.today\/blog\/javascript-to-groovy-objects-in-geb-functional-test-cases\/#webpage","url":"https:\/\/2thenew.today\/blog\/javascript-to-groovy-objects-in-geb-functional-test-cases\/","name":"Javascript to groovy objects in GEB functional test cases | TO THE NEW Blog","description":"Use Case While writing functional tests sometimes we need to test whether a certain javascript objects have some particular values. If we have a JavaScript object such as in our page [code] var myObj = { attr1 : 'attr1-val', attr2 : 'attr2-val'}; [\/code] then after reaching that page we can execute the below in our GEB","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/2thenew.today\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/2thenew.today\/blog\/javascript-to-groovy-objects-in-geb-functional-test-cases\/#breadcrumblist"},"author":{"@id":"https:\/\/2thenew.today\/blog\/author\/aseem\/#author"},"creator":{"@id":"https:\/\/2thenew.today\/blog\/author\/aseem\/#author"},"datePublished":"2015-12-02T15:14:34+05:30","dateModified":"2015-12-07T14:53:44+05:30"},{"@type":"WebSite","@id":"https:\/\/2thenew.today\/blog\/#website","url":"https:\/\/2thenew.today\/blog\/","name":"TO THE NEW Blog","inLanguage":"en-US","publisher":{"@id":"https:\/\/2thenew.today\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"TO THE NEW BLOG","og:type":"blog","og:title":"Javascript to groovy objects in GEB functional test cases | TO THE NEW Blog","og:description":"Use Case While writing functional tests sometimes we need to test whether a certain javascript objects have some particular values. If we have a JavaScript object such as in our page [code] var myObj = { attr1 : 'attr1-val', attr2 : 'attr2-val'}; [\/code] then after reaching that page we can execute the below in our GEB","og:url":"https:\/\/2thenew.today\/blog\/javascript-to-groovy-objects-in-geb-functional-test-cases\/","og:image":"https:\/\/2thenew.today\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","og:image:secure_url":"https:\/\/2thenew.today\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","twitter:card":"summary","twitter:site":"@tothenew","twitter:title":"Javascript to groovy objects in GEB functional test cases | TO THE NEW Blog","twitter:description":"Use Case While writing functional tests sometimes we need to test whether a certain javascript objects have some particular values. If we have a JavaScript object such as in our page [code] var myObj = { attr1 : 'attr1-val', attr2 : 'attr2-val'}; [\/code] then after reaching that page we can execute the below in our GEB","twitter:image":"https:\/\/2thenew.today\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png"},"aioseo_meta_data":{"post_id":"30406","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":"","og_description":"","og_object_type":"blog","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":"","og_article_tags":"","twitter_use_og":false,"twitter_card":"summary","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2021-04-29 12:08:58","updated":"2024-02-29 08:22:32","focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/2thenew.today\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/2thenew.today\/blog\/category\/technology\/\" title=\"Technology\">Technology<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tJavascript to groovy objects in GEB functional test cases\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/2thenew.today\/blog"},{"label":"Technology","link":"https:\/\/2thenew.today\/blog\/category\/technology\/"},{"label":"Javascript to groovy objects in GEB functional test cases","link":"https:\/\/2thenew.today\/blog\/javascript-to-groovy-objects-in-geb-functional-test-cases\/"}],"_links":{"self":[{"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/posts\/30406","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/users\/161"}],"replies":[{"embeddable":true,"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/comments?post=30406"}],"version-history":[{"count":0,"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/posts\/30406\/revisions"}],"wp:attachment":[{"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/media?parent=30406"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/categories?post=30406"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/tags?post=30406"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}