

{"id":15941,"date":"2018-06-03T06:04:01","date_gmt":"2018-06-03T06:04:01","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=15941"},"modified":"2018-06-03T06:04:01","modified_gmt":"2018-06-03T06:04:01","slug":"kafka-serialization-and-deserialization","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/","title":{"rendered":"Kafka Serialization and Deserialization With Example"},"content":{"rendered":"<p><span style=\"font-weight: 400\">Today, in this Kafka SerDe article, we will learn the concept to create a custom serializer and deserializer with Kafka. Moreover, we will look at\u00a0how serialization works in Kafka and\u00a0why serialization is required. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Along with this, we will see<strong>\u00a0<\/strong>Kafka serializer\u00a0example and Kafka\u00a0deserializer example. In addition, this Kafka Serialization and Deserialization tutorial provide us with the\u00a0knowledge of<strong>\u00a0<\/strong>Kafka string serializer and<strong>\u00a0<\/strong>Kafka<strong>\u00a0<\/strong>object serializer.\u00a0<\/span><\/p>\n<p>Basically,<strong> Apache Kafka<\/strong> offers the ability that we can easily publish as well as subscribe to streams of records. Hence, we have the flexibility to create our own custom serializer as well as deserializer which helps to transmit different data type using it.<\/p>\n<p>So, let&#8217;s start Kafka Serialization and Deserialization<\/p>\n<h2><span style=\"font-weight: 400\">Apache Kafka SerDe<\/span><\/h2>\n<p><span style=\"font-weight: 400\">However, the process of converting an object into a stream of bytes for the purpose of transmission is what we call Serialization. Although, Apache Kafka stores as well as transmit these bytes of arrays in its queue.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Whereas, the opposite of Serialization is Deserialization. Here we convert bytes of arrays into the data type we desire. However, make sure Kafka offers serializers and deserializers for only a few data types, such as <\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">String<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Long<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Double<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Integer<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Bytes<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400\">Why Use Custom Serializer and Deserializer with Kafka?<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Basically, in order to prepare the message for transmission from the producer to the broker, we use serializers. <\/span><\/p>\n<p><span style=\"font-weight: 400\">In other words, before transmitting the entire message to the broker, let the producer know how to convert the message into byte array we use serializers. Similarly, to convert the byte array back to the object we use the deserializers by the consumer.<\/span><\/p>\n<h2><span style=\"font-weight: 400\">Implementation of Kafka SerDe<\/span><\/h2>\n<p><span style=\"font-weight: 400\">It is very important to implement the org.apache.kafka.common.serialization.Serializer interface to create a serializer class. Ans, for deserializer class, it is important to implement the org.apache.kafka.common.serialization.Deserializer interface.<\/span><\/p>\n<p><span style=\"font-weight: 400\">There are 3 methods for both Kafka serialization and deserialization interfaces:<\/span><\/p>\n<div id=\"attachment_16471\" style=\"width: 1210px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/mplementation-Methods-01.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-16471\" class=\"wp-image-16471 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/mplementation-Methods-01.jpg\" alt=\"Implementation Methods for Kafka Serialization and Deserialization\" width=\"1200\" height=\"628\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/mplementation-Methods-01.jpg 1200w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/mplementation-Methods-01-150x79.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/mplementation-Methods-01-300x157.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/mplementation-Methods-01-768x402.jpg 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/mplementation-Methods-01-1024x536.jpg 1024w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><p id=\"caption-attachment-16471\" class=\"wp-caption-text\">Implementation Methods for Kafka Serialization and Deserialization<\/p><\/div>\n<h4><strong>a. Configure<\/strong><\/h4>\n<p><span style=\"font-weight: 400\">At startup with configuration, we call Configure method.<\/span><\/p>\n<h4><strong>b. Serialize\/deserialize<\/strong><\/h4>\n<p><span style=\"font-weight: 400\">For the purpose of Kafka serialization and deserialization, we use this method.<\/span><\/p>\n<h4><strong>c. Close<\/strong><\/h4>\n<p><span style=\"font-weight: 400\">While Kafka session is to be closed, we use Close method.<\/span><\/p>\n<h2><span style=\"font-weight: 400\">Serializer Interface With Kafka<\/span><\/h2>\n<pre class=\"EnlighterJSRAW\">public interface Serializer extends Closeable {\n void configure(Map&lt;String, ?&gt; var1, boolean var2);\n byte[] serialize(String var1, T var2);\n void close();\n}<\/pre>\n<h2><span style=\"font-weight: 400\">Deserializer Interface With Kafka<\/span><\/h2>\n<pre class=\"EnlighterJSRAW\">public interface Deserializer extends Closeable {\n void configure(Map&lt;String, ?&gt; var1, boolean var2);\n T deserialize(String var1, byte[] var2);\n void close();\n}<\/pre>\n<h2><span style=\"font-weight: 400\">Example of Serializer and Deserializer<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Here dependencies are:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Kafka (0.10.1.1).<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">FasterXML Jackson (2.8.6).<\/span><\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\">user.java:\npublic class User {\n private String firstname;\n private int age;\n public User() {\n }\n public User(String firstname, int age) {\n   this.firstname = firstname;\n   this.age = age;\n }\n public String getfirstName() {\n   return this.firstname;\n }\n public int getAge() {\n   return this.age;\n }\n @Override public String toString() {\n   return \"User(\" + firstname + \", \" + age + \")\";\n }\n}<\/pre>\n<pre class=\"EnlighterJSRAW\">userserializer.java:\npublic class UserSerializer implements Serializer {\n @Override public void configure(Map&lt;String, ?&gt; map, boolean b) {\n }\n @Override public byte[] serialize(String arg0, User arg1) {\n   byte[] retVal = null;\n   ObjectMapper objectMapper = new ObjectMapper();\n   try {\n     retVal = objectMapper.writeValueAsString(arg1).getBytes();\n   } catch (Exception e) {\n     e.printStackTrace();\n   }\n   return retVal;\n }\n @Override public void close() {\n }\n}<\/pre>\n<pre class=\"EnlighterJSRAW\">Userdeserializer.java:\npublic class UserDeserializer implements Deserializer {\n @Override public void close() {\n }\n @Override public void configure(Map&lt;String, ?&gt; arg0, boolean arg1) {\n }\n @Override\n public User deserialize(String arg0, byte[] arg1) {\n   ObjectMapper mapper = new ObjectMapper();\n   User user = null;\n   try {\n     user = mapper.readValue(arg1, User.class);\n   } catch (Exception e) {\n     e.printStackTrace();\n   }\n   return user;\n }\n}<\/pre>\n<p><span style=\"font-weight: 400\">Further, in order to use the above serializer, we have to use this property to register it:<\/span><\/p>\n<pre class=\"EnlighterJSRAW\">props.put(\"value.serializer\", \"com.knoldus.serializers.UserSerializer\");<\/pre>\n<p>So, the producer will be:<\/p>\n<pre class=\"EnlighterJSRAW\">try (Producer&lt;String, User&gt; producer = new KafkaProducer&lt;&gt;(props)) {\n  producer.send(new ProducerRecord&lt;String, User&gt;(\"MyTopic\", user));\n  System.out.println(\"Message \" + user.toString() + \" sent !!\");\n} catch (Exception e) {\n  e.printStackTrace();\n}<\/pre>\n<p>Now, again, we need to register this property, for the deserializer:<\/p>\n<pre class=\"EnlighterJSRAW\">props.put(\"value.deserializer\", \"com.knoldus.deserializer.UserDeserializer\");<\/pre>\n<p>Hence, the consumer will be:<\/p>\n<pre class=\"EnlighterJSRAW\">try (KafkaConsumer&lt;String, User&gt; consumer = new KafkaConsumer&lt;&gt;(props)) {\n   consumer.subscribe(Collections.singletonList(topic));\n   while (true) {\n       ConsumerRecords&lt;String, User&gt; messages = consumer.poll(100);\n       for (ConsumerRecord&lt;String, User&gt; message : messages) {\n         System.out.println(\"Message received \" + message.value().toString());\n       }\n   }\n} catch (Exception e) {\n   e.printStackTrace();\n}<\/pre>\n<p>So, this was all Kafka Serialization and Deserialization. Hope you like and understand our explanation of the custom serializer and deserializer with Kafka.<\/p>\n<h2><span style=\"font-weight: 400\">Conclusion<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Hence, in this Kafka Serialization and Deserialization tutorial, we have learned to create a custom Kafka SerDe example. Moreover, we saw the need for serializer and deserializer with Kafka. Along with this, we learned implementation methods for Kafka Serialization and Deserialization. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Also, we understood Kafka string serializer and Kafka object serializer with the help of an example. However, if any doubt occurs, feel free to ask in the comment section.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today, in this Kafka SerDe article, we will learn the concept to create a custom serializer and deserializer with Kafka. Moreover, we will look at\u00a0how serialization works in Kafka and\u00a0why serialization is required. Along&#46;&#46;&#46;<\/p>\n","protected":false},"author":5,"featured_media":16470,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[3724,4262,4350,7880,7910,7937,7938,7940,7942,7954,12736,16174],"class_list":["post-15941","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kafka","tag-define-serializer-and-deserializer","tag-example-of-deserilaizer","tag-example-of-serializer","tag-kafka-deserializer-example","tag-kafka-object-serializer","tag-kafka-serde","tag-kafka-serde-example","tag-kafka-serialization-and-deserialization-tutorial","tag-kafka-serializer-example","tag-kafka-string-serializer","tag-serialization-and-deserialization","tag-why-serialization-is-required"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kafka Serialization and Deserialization With Example - DataFlair<\/title>\n<meta name=\"description\" content=\"Kafka serialization and deserialization, need for serializer &amp; deserializer, what is serialization &amp; Deserialization, serialization working, Kafka SerDe\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kafka Serialization and Deserialization With Example - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Kafka serialization and deserialization, need for serializer &amp; deserializer, what is serialization &amp; Deserialization, serialization working, Kafka SerDe\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-06-03T06:04:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/Apache-Kafka-Serialization-And-Deserialization-01.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kafka Serialization and Deserialization With Example - DataFlair","description":"Kafka serialization and deserialization, need for serializer & deserializer, what is serialization & Deserialization, serialization working, Kafka SerDe","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:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/","og_locale":"en_US","og_type":"article","og_title":"Kafka Serialization and Deserialization With Example - DataFlair","og_description":"Kafka serialization and deserialization, need for serializer & deserializer, what is serialization & Deserialization, serialization working, Kafka SerDe","og_url":"https:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2018-06-03T06:04:01+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/Apache-Kafka-Serialization-And-Deserialization-01.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/7f83c342f5d1632d6f7b4b0b0f447823"},"headline":"Kafka Serialization and Deserialization With Example","datePublished":"2018-06-03T06:04:01+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/"},"wordCount":528,"commentCount":1,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/Apache-Kafka-Serialization-And-Deserialization-01.jpg","keywords":["define serializer and deserializer","example of deserilaizer","example of serializer","Kafka deserializer example","Kafka object serializer","Kafka Serde","Kafka Serde example","Kafka Serialization and Deserialization tutorial","Kafka serializer example","Kafka string serializer","Serialization and deserialization","why serialization is required"],"articleSection":["Apache Kafka Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/","url":"https:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/","name":"Kafka Serialization and Deserialization With Example - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/Apache-Kafka-Serialization-And-Deserialization-01.jpg","datePublished":"2018-06-03T06:04:01+00:00","description":"Kafka serialization and deserialization, need for serializer & deserializer, what is serialization & Deserialization, serialization working, Kafka SerDe","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/Apache-Kafka-Serialization-And-Deserialization-01.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/05\/Apache-Kafka-Serialization-And-Deserialization-01.jpg","width":1200,"height":628,"caption":"Kafka- Serialization and Deserialization"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/kafka-serialization-and-deserialization\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Apache Kafka Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/kafka\/"},{"@type":"ListItem","position":3,"name":"Kafka Serialization and Deserialization With Example"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/7f83c342f5d1632d6f7b4b0b0f447823","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"DataFlair Team creates expert-level guides on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our goal is to empower learners with easy-to-understand content. Explore our resources for career growth and practical learning.","url":"https:\/\/data-flair.training\/blogs\/author\/dfteam1\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/15941","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=15941"}],"version-history":[{"count":0,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/15941\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/16470"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=15941"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=15941"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=15941"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}