{"id":3181,"date":"2022-12-05T12:03:28","date_gmt":"2022-12-05T12:03:28","guid":{"rendered":"https:\/\/metaschool.so\/articles\/?p=3181"},"modified":"2025-01-16T08:48:35","modified_gmt":"2025-01-16T08:48:35","slug":"how-can-i-return-an-array-of-structs-in-solidity","status":"publish","type":"post","link":"https:\/\/metaschool.so\/articles\/how-can-i-return-an-array-of-structs-in-solidity\/","title":{"rendered":"How to Return an Array of Structs in Solidity: Methods and Examples"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_56_1 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title \" >Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/metaschool.so\/articles\/how-can-i-return-an-array-of-structs-in-solidity\/#Ways_to_return_an_array_of_structs_in_Solidity\" title=\"Ways to return an array of structs in Solidity\">Ways to return an array of structs in Solidity<\/a><ul class='ez-toc-list-level-3'><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/metaschool.so\/articles\/how-can-i-return-an-array-of-structs-in-solidity\/#1_Use_a_mapping_to_store_the_structs\" title=\"1. Use a mapping to store the structs\">1. Use a mapping to store the structs<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/metaschool.so\/articles\/how-can-i-return-an-array-of-structs-in-solidity\/#2_Use_a_dynamic_array_to_store_the_structs\" title=\"2. Use a dynamic array to store the structs\">2. Use a dynamic array to store the structs<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/metaschool.so\/articles\/how-can-i-return-an-array-of-structs-in-solidity\/#3_Use_a_struct_that_contains_an_array_of_structs\" title=\"3. Use a struct that contains an array of structs\">3. Use a struct that contains an array of structs<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n<p>To return an array of structs in <a href=\"https:\/\/metaschool.so\/solidity?utm_campaign=smf&amp;utm_source=blog&amp;utm_medium=organic\">Solidity<\/a>, you can create a function that returns a dynamically sized array of the struct type. The function can then loop through the data and add each struct to the array. The array can be returned at the end of the function. <\/p>\n\n\n\n<p>In order to return an array of structs in Solidity, you can use the following syntax:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"function getStructArray() public view returns (Struct[] memory) {\n  Struct[] memory result = new Struct[](10);\n  \/\/ populate the array with structs\n  return result;\n}\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">getStructArray<\/span><span style=\"color: #D4D4D4\">() <\/span><span style=\"color: #569CD6\">public<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">view<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">returns<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #569CD6\">Struct<\/span><span style=\"color: #D4D4D4\">[] <\/span><span style=\"color: #569CD6\">memory<\/span><span style=\"color: #D4D4D4\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  Struct[] <\/span><span style=\"color: #569CD6\">memory<\/span><span style=\"color: #D4D4D4\"> result = <\/span><span style=\"color: #C586C0\">new<\/span><span style=\"color: #D4D4D4\"> Struct[](<\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #6A9955\">\/\/ populate the array with structs<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> result;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>In this example, Struct is the name of the struct you want to return and <code>result<\/code> is the name of the array that will hold the structs. The <code>memory<\/code> keyword is used to allocate the array in memory.<\/p>\n\n\n\n<p>Also check out \ud83d\udc49\ud83c\udffc <a href=\"https:\/\/metaschool.so\/articles\/object-oriented-programming-deepdive\/\">Deep Dive into Object Oriented Programming (OOP)<\/a><\/p>\n\n\n\n<p>You can also return a dynamic array of structs using the <code>mapping<\/code> data type:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"mapping (uint =&gt; Struct) public structArray;\n\nfunction getStructArray() public view returns (Struct[] memory) {\n  Struct[] memory result = new Struct[](structArray.length);\n  uint i = 0;\n  for (uint id in structArray) {\n    result[i] = structArray[id];\n    i++;\n  }\n  return result;\n}\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">mapping<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #4EC9B0\">uint<\/span><span style=\"color: #D4D4D4\"> =&gt; Struct) <\/span><span style=\"color: #569CD6\">public<\/span><span style=\"color: #D4D4D4\"> structArray;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">getStructArray<\/span><span style=\"color: #D4D4D4\">() <\/span><span style=\"color: #569CD6\">public<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">view<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">returns<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #569CD6\">Struct<\/span><span style=\"color: #D4D4D4\">[] <\/span><span style=\"color: #569CD6\">memory<\/span><span style=\"color: #D4D4D4\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  Struct[] <\/span><span style=\"color: #569CD6\">memory<\/span><span style=\"color: #D4D4D4\"> result = <\/span><span style=\"color: #C586C0\">new<\/span><span style=\"color: #D4D4D4\"> Struct[](structArray.length);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #4EC9B0\">uint<\/span><span style=\"color: #D4D4D4\"> i = <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #4EC9B0\">uint<\/span><span style=\"color: #D4D4D4\"> id in structArray) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    result[i] = structArray[id];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    i++;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> result;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>In this example, <code>structArray<\/code> is a mapping that maps a uint (e.g. an ID) to a <code>Struct<\/code>. The <code>getStructArray()<\/code> function iterates over the keys in the mapping, populates the <code>result<\/code> array with the structs from the mapping, and then returns the array.<\/p>\n\n\n\n<p>Here is another example:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"struct User {\n  address addr;\n  string name;\n  uint age;\n}\n\nUser[] public users;\n\nfunction getUsers() public view returns (User[] memory) {\n  User[] memory userArray = new User[](users.length);\n\n  for (uint i = 0; i < users.length; i++) {\n    userArray[i] = users[i];\n  }\n\n  return userArray;\n}\n\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">struct<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">User<\/span><span style=\"color: #D4D4D4\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #4EC9B0\">address<\/span><span style=\"color: #D4D4D4\"> addr;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #4EC9B0\">string<\/span><span style=\"color: #D4D4D4\"> name;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #4EC9B0\">uint<\/span><span style=\"color: #D4D4D4\"> age;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">User[] <\/span><span style=\"color: #569CD6\">public<\/span><span style=\"color: #D4D4D4\"> users;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">function<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">getUsers<\/span><span style=\"color: #D4D4D4\">() <\/span><span style=\"color: #569CD6\">public<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">view<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">returns<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #569CD6\">User<\/span><span style=\"color: #D4D4D4\">[] <\/span><span style=\"color: #569CD6\">memory<\/span><span style=\"color: #D4D4D4\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  User[] <\/span><span style=\"color: #569CD6\">memory<\/span><span style=\"color: #D4D4D4\"> userArray = <\/span><span style=\"color: #C586C0\">new<\/span><span style=\"color: #D4D4D4\"> User[](users.length);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #4EC9B0\">uint<\/span><span style=\"color: #D4D4D4\"> i = <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">; i &lt; users.length; i++) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    userArray[i] = users[i];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> userArray;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>In this example, the <code>getUsers<\/code> function creates a new dynamically sized array of <code>User<\/code> structs and loops through the <code>users<\/code> array, adding each struct to the new array. The array is then returned at the end of the function.<\/p>\n\n\n\n<p><em>We also asked our teammate, Aswin, and this is how he said he&#8217;d approach it \ud83d\udc47\ud83c\udffc <\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ways-to-return-an-array-of-structs-in-solidity\"><span class=\"ez-toc-section\" id=\"Ways_to_return_an_array_of_structs_in_Solidity\"><\/span>Ways to return an array of structs in Solidity<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-use-a-mapping-to-store-the-structs\"><span class=\"ez-toc-section\" id=\"1_Use_a_mapping_to_store_the_structs\"><\/span>1. Use a mapping to store the structs<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Then loop through the mapping to retrieve each struct and add it to the array.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-nv-site-bg-background-color has-background\"><code>struct MyStruct {\n  uint256 id;\n  string name;\n}\n\nmapping (uint256 =&gt; MyStruct) public myStructs;\n\nfunction getMyStructs() public view returns (MyStruct[] memory) {\n  MyStruct[] memory result = new MyStruct[](myStructs.length);\n  uint256 i = 0;\n  for (uint256 id in myStructs) {\n    result[i] = myStructs[id];\n    i++;\n  }\n  return result;\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2-use-a-dynamic-array-to-store-the-structs\"><span class=\"ez-toc-section\" id=\"2_Use_a_dynamic_array_to_store_the_structs\"><\/span>2. Use a dynamic array to store the structs<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Then loop through the array to retrieve each struct and add it to the result array.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-nv-site-bg-background-color has-background\"><code>struct MyStruct {\n  uint256 id;\n  string name;\n}\n\nMyStruct[] public myStructs;\n\nfunction getMyStructs() public view returns (MyStruct[] memory) {\n  MyStruct[] memory result = new MyStruct[](myStructs.length);\n  for (uint256 i = 0; i &lt; myStructs.length; i++) {\n    result[i] = myStructs[i];\n  }\n  return result;\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"3-use-a-struct-that-contains-an-array-of-structs\"><span class=\"ez-toc-section\" id=\"3_Use_a_struct_that_contains_an_array_of_structs\"><\/span>3. Use a struct that contains an array of structs<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>And return the struct.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-nv-site-bg-background-color has-background\"><code>struct MyStruct {\n  uint256 id;\n  string name;\n}\n\nstruct MyStructs {\n  MyStruct[] myStructs;\n}\n\nMyStructs public myStructs;\n\nfunction getMyStructs() public view returns (MyStructs memory) {\n  return myStructs;\n}\n<\/code><\/pre>\n\n\n\n<p>Note that in all of these scenarios, the returned array will be a copy of the original array and modifying it will not affect the original array in the contract. To modify the original array, the contract would need to have a function to update the array and the user would need to call that function.<\/p>\n\n\n\n<p>Hopefully this answer helps you understand how to return an array of structs in Solidity. If you have any suggestions, feedback or got something nice to say \u2013 leave a comment below and say hi \ud83d\udc4b\ud83c\udffc<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":3198,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[292],"tags":[31,46],"class_list":["post-3181","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-answers","tag-ethereum-blockchain","tag-solidity"],"_links":{"self":[{"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/posts\/3181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/comments?post=3181"}],"version-history":[{"count":12,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/posts\/3181\/revisions"}],"predecessor-version":[{"id":11901,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/posts\/3181\/revisions\/11901"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/media\/3198"}],"wp:attachment":[{"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/media?parent=3181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/categories?post=3181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/metaschool.so\/articles\/wp-json\/wp\/v2\/tags?post=3181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}