{"id":3179,"date":"2018-11-12T23:52:14","date_gmt":"2018-11-12T21:52:14","guid":{"rendered":"https:\/\/mariusbancila.ro\/blog\/?p=3179"},"modified":"2018-11-12T23:52:14","modified_gmt":"2018-11-12T21:52:14","slug":"json-and-xml-to-csharp-classes-in-visual-studio","status":"publish","type":"post","link":"https:\/\/mariusbancila.ro\/blog\/2018\/11\/12\/json-and-xml-to-csharp-classes-in-visual-studio\/","title":{"rendered":"JSON and XML to C# classes in Visual Studio"},"content":{"rendered":"<p>Although this feature is available for years in Visual Studio, I only recently discovered this gem that allows rapid generation of C# classes from either JSON or XML.<\/p>\n<p>Here is how it works:<\/p>\n<ol>\n<li>Copy the JSON or XML code to the clipboard.<\/li>\n<li>In Visual Studio, go to <strong>Edit > Past Special<\/strong> and chose either <strong>Paste JSON as classes<\/strong> or <strong>Paste XML as classes<\/strong>.<br \/>\n  <a href=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/11\/paste_special_1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/11\/paste_special_1.png\" alt=\"\" width=\"574\" height=\"585\" class=\"alignnone size-full wp-image-3180\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/11\/paste_special_1.png 574w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/11\/paste_special_1-294x300.png 294w\" sizes=\"auto, (max-width: 574px) 100vw, 574px\" \/><\/a><\/li>\n<\/ol>\n<p>However, this feature is only available if you have the <strong>ASP.NET and web development<\/strong> workload installed.<br \/>\n<a href=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/11\/paste_special_2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/11\/paste_special_2.png\" alt=\"\" width=\"960\" height=\"667\" class=\"alignnone size-full wp-image-3181\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/11\/paste_special_2.png 960w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/11\/paste_special_2-300x208.png 300w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/11\/paste_special_2-768x534.png 768w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/11\/paste_special_2-700x486.png 700w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a><\/p>\n<h3>JSON to classes<\/h3>\n<p>To check how this feature works and how it compares with other alternatives I picked a couple random JSON examples. The first one is from the responses of the Translator Text API (that you can find <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/cognitive-services\/Translator\/reference\/v3-0-translate?tabs=curl\">here<\/a>):<\/p>\n<pre class=\"lang:js decode:true \" >[\r\n    {\r\n        \"translations\":[\r\n            {\"text\":\"\u4f60\u597d, \u4f60\u53eb\u4ec0\u4e48\u540d\u5b57\uff1f\",\"to\":\"zh-Hans\"},\r\n            {\"text\":\"Hallo, was ist dein Name?\",\"to\":\"de\"}\r\n        ]\r\n    }\r\n]<\/pre>\n<p>Special pasting in Visual Studio produces the following classes:<\/p>\n<pre class=\"lang:c# decode:true \" >public class Rootobject\r\n{\r\n   public Class1[] Property1 { get; set; }\r\n}\r\n\r\npublic class Class1\r\n{\r\n   public Detectedlanguage detectedLanguage { get; set; }\r\n   public Translation[] translations { get; set; }\r\n}\r\n\r\npublic class Detectedlanguage\r\n{\r\n   public string language { get; set; }\r\n   public float score { get; set; }\r\n}\r\n\r\npublic class Translation\r\n{\r\n   public string text { get; set; }\r\n   public Transliteration transliteration { get; set; }\r\n   public string to { get; set; }\r\n}\r\n\r\npublic class Transliteration\r\n{\r\n   public string script { get; set; }\r\n   public string text { get; set; }\r\n}<\/pre>\n<p>A couple of remarks related to this:<\/p>\n<ul>\n<li>The <tt>Rootobject<\/tt> is not actually present in JSON, and you cannot deserialized the sample JSON to an instance of this class, but rather to a <tt>Class1[]<\/tt>.<\/li>\n<li>The score is a floating point number and the type used here is <tt>float<\/tt>, although I would have expected <tt>double<\/tt>.<\/li>\n<\/ul>\n<p>I compared this result with the output of several online similar utilities.<\/p>\n<p><a href=\"https:\/\/jsonutils.com\/\">JSON Utils<\/a> produces the following result: <\/p>\n<pre class=\"lang:c# decode:true \" >namespace JSONUtils\r\n{\r\n   public class DetectedLanguage\r\n   {\r\n      public string language { get; set; }\r\n      public double score { get; set; }\r\n   }\r\n\r\n   public class Transliteration\r\n   {\r\n      public string script { get; set; }\r\n      public string text { get; set; }\r\n   }\r\n\r\n   public class Translation\r\n   {\r\n      public string text { get; set; }\r\n      public Transliteration transliteration { get; set; }\r\n      public string to { get; set; }\r\n   }\r\n\r\n   public class TextResponse\r\n   {\r\n      public DetectedLanguage detectedLanguage { get; set; }\r\n      public IList&lt;Translation&gt; translations { get; set; }\r\n   }\r\n}\r\n<\/pre>\n<p><a href=\"https:\/\/app.quicktype.io\/\">QuickType<\/a> has the following result: <\/p>\n<pre class=\"lang:c# decode:true \" >namespace QuickType\r\n{\r\n   public partial class TextResponse\r\n   {\r\n      public DetectedLanguage DetectedLanguage { get; set; }\r\n      public Translation[] Translations { get; set; }\r\n   }\r\n\r\n   public partial class DetectedLanguage\r\n   {\r\n      public string Language { get; set; }\r\n      public long Score { get; set; }\r\n   }\r\n\r\n   public partial class Translation\r\n   {\r\n      public string Text { get; set; }\r\n      public Transliteration Transliteration { get; set; }\r\n      public string To { get; set; }\r\n   }\r\n\r\n   public partial class Transliteration\r\n   {\r\n      public string Script { get; set; }\r\n      public string Text { get; set; }\r\n   }\r\n}<\/pre>\n<p>Notice that, unlike the Visual Studio functionality where all the options are hard-coded, these online utilies allow you to set various options such as whether property attributes should be generated, whether to use <tt>T[]<\/tt> or <tt>List&lt;T&gt;<\/tt> and others. The QuickType app supports a larger number of features, although you must be authenticated to toggle them.<\/p>\n<p>The results from these are pretty similar. Neither of them generated a root object like Visual Studio did. The first application used <tt>double<\/tt> for the numerical type of 1.0, while the second used <tt>long<\/tt>. When I changed the value from 1.0 to 1.2, QuickType also used <tt>double<\/tt>.<\/p>\n<p>Another example that I tried was from <a href=\"https:\/\/json.org\/example.html\">https:\/\/json.org\/example.html<\/a>:<\/p>\n<pre class=\"lang:js decode:true \" >{\"widget\": {\r\n    \"debug\": \"on\",\r\n    \"window\": {\r\n        \"title\": \"Sample Konfabulator Widget\",\r\n        \"name\": \"main_window\",\r\n        \"width\": 500,\r\n        \"height\": 500\r\n    },\r\n    \"image\": { \r\n        \"src\": \"Images\/Sun.png\",\r\n        \"name\": \"sun1\",\r\n        \"hOffset\": 250,\r\n        \"vOffset\": 250,\r\n        \"alignment\": \"center\"\r\n    },\r\n    \"text\": {\r\n        \"data\": \"Click Here\",\r\n        \"size\": 36,\r\n        \"style\": \"bold\",\r\n        \"name\": \"text1\",\r\n        \"hOffset\": 250,\r\n        \"vOffset\": 100,\r\n        \"alignment\": \"center\",\r\n        \"onMouseUp\": \"sun1.opacity = (sun1.opacity \/ 100) * 90;\"\r\n    }\r\n}} <\/pre>\n<p>The result of converting this to classes was mostly identical in all three cases (Visual Studio, JSON Utils, and QuickType), with the exeption of the casing and the type for the numerical values (QuickType used <tt>long<\/tt> instead of <tt>int<\/tt>).<\/p>\n<pre class=\"lang:c# decode:true \" >public class Rootobject\r\n{\r\n   public Widget widget { get; set; }\r\n}\r\n\r\npublic class Widget\r\n{\r\n   public string debug { get; set; }\r\n   public Window window { get; set; }\r\n   public Image image { get; set; }\r\n   public Text text { get; set; }\r\n}\r\n\r\npublic class Window\r\n{\r\n   public string title { get; set; }\r\n   public string name { get; set; }\r\n   public int width { get; set; }\r\n   public int height { get; set; }\r\n}\r\n\r\npublic class Image\r\n{\r\n   public string src { get; set; }\r\n   public string name { get; set; }\r\n   public int hOffset { get; set; }\r\n   public int vOffset { get; set; }\r\n   public string alignment { get; set; }\r\n}\r\n\r\npublic class Text\r\n{\r\n   public string data { get; set; }\r\n   public int size { get; set; }\r\n   public string style { get; set; }\r\n   public string name { get; set; }\r\n   public int hOffset { get; set; }\r\n   public int vOffset { get; set; }\r\n   public string alignment { get; set; }\r\n   public string onMouseUp { get; set; }\r\n}<\/pre>\n<h3>XML to classes<\/h3>\n<p>For testing the XML to classes functionalities I used the XML equivalent of the last JSON example, which looks as follows:<\/p>\n<pre class=\"lang:xhtml decode:true \" >&lt;widget&gt;\r\n    &lt;debug&gt;on&lt;\/debug&gt;\r\n    &lt;window title=\"Sample Konfabulator Widget\"&gt;\r\n        &lt;name&gt;main_window&lt;\/name&gt;\r\n        &lt;width&gt;500&lt;\/width&gt;\r\n        &lt;height&gt;500&lt;\/height&gt;\r\n    &lt;\/window&gt;\r\n    &lt;image src=\"Images\/Sun.png\" name=\"sun1\"&gt;\r\n        &lt;hOffset&gt;250&lt;\/hOffset&gt;\r\n        &lt;vOffset&gt;250&lt;\/vOffset&gt;\r\n        &lt;alignment&gt;center&lt;\/alignment&gt;\r\n    &lt;\/image&gt;\r\n    &lt;text data=\"Click Here\" size=\"36\" style=\"bold\"&gt;\r\n        &lt;name&gt;text1&lt;\/name&gt;\r\n        &lt;hOffset&gt;250&lt;\/hOffset&gt;\r\n        &lt;vOffset&gt;100&lt;\/vOffset&gt;\r\n        &lt;alignment&gt;center&lt;\/alignment&gt;\r\n        &lt;onMouseUp&gt;\r\n            sun1.opacity = (sun1.opacity \/ 100) * 90;\r\n        &lt;\/onMouseUp&gt;\r\n    &lt;\/text&gt;\r\n&lt;\/widget&gt;<\/pre>\n<p>Visual Studio converted this to the following C# code:<\/p>\n<pre class=\"lang:c# decode:true \" >\/\/ NOTE: Generated code may require at least .NET Framework 4.5 or .NET Core\/Standard 2.0.\r\n\/\/\/ &lt;remarks\/&gt;\r\n[System.SerializableAttribute()]\r\n[System.ComponentModel.DesignerCategoryAttribute(\"code\")]\r\n[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]\r\n[System.Xml.Serialization.XmlRootAttribute(Namespace = \"\", IsNullable = false)]\r\npublic partial class widget\r\n{\r\n\r\n   private string debugField;\r\n\r\n   private widgetWindow windowField;\r\n\r\n   private widgetImage imageField;\r\n\r\n   private widgetText textField;\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   public string debug\r\n   {\r\n      get\r\n      {\r\n         return this.debugField;\r\n      }\r\n      set\r\n      {\r\n         this.debugField = value;\r\n      }\r\n   }\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   public widgetWindow window\r\n   {\r\n      get\r\n      {\r\n         return this.windowField;\r\n      }\r\n      set\r\n      {\r\n         this.windowField = value;\r\n      }\r\n   }\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   public widgetImage image\r\n   {\r\n      get\r\n      {\r\n         return this.imageField;\r\n      }\r\n      set\r\n      {\r\n         this.imageField = value;\r\n      }\r\n   }\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   public widgetText text\r\n   {\r\n      get\r\n      {\r\n         return this.textField;\r\n      }\r\n      set\r\n      {\r\n         this.textField = value;\r\n      }\r\n   }\r\n}\r\n\r\n\/\/\/ &lt;remarks\/&gt;\r\n[System.SerializableAttribute()]\r\n[System.ComponentModel.DesignerCategoryAttribute(\"code\")]\r\n[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]\r\npublic partial class widgetWindow\r\n{\r\n\r\n   private string nameField;\r\n\r\n   private ushort widthField;\r\n\r\n   private ushort heightField;\r\n\r\n   private string titleField;\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   public string name\r\n   {\r\n      get\r\n      {\r\n         return this.nameField;\r\n      }\r\n      set\r\n      {\r\n         this.nameField = value;\r\n      }\r\n   }\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   public ushort width\r\n   {\r\n      get\r\n      {\r\n         return this.widthField;\r\n      }\r\n      set\r\n      {\r\n         this.widthField = value;\r\n      }\r\n   }\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   public ushort height\r\n   {\r\n      get\r\n      {\r\n         return this.heightField;\r\n      }\r\n      set\r\n      {\r\n         this.heightField = value;\r\n      }\r\n   }\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   [System.Xml.Serialization.XmlAttributeAttribute()]\r\n   public string title\r\n   {\r\n      get\r\n      {\r\n         return this.titleField;\r\n      }\r\n      set\r\n      {\r\n         this.titleField = value;\r\n      }\r\n   }\r\n}\r\n\r\n\/\/\/ &lt;remarks\/&gt;\r\n[System.SerializableAttribute()]\r\n[System.ComponentModel.DesignerCategoryAttribute(\"code\")]\r\n[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]\r\npublic partial class widgetImage\r\n{\r\n\r\n   private byte hOffsetField;\r\n\r\n   private byte vOffsetField;\r\n\r\n   private string alignmentField;\r\n\r\n   private string srcField;\r\n\r\n   private string nameField;\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   public byte hOffset\r\n   {\r\n      get\r\n      {\r\n         return this.hOffsetField;\r\n      }\r\n      set\r\n      {\r\n         this.hOffsetField = value;\r\n      }\r\n   }\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   public byte vOffset\r\n   {\r\n      get\r\n      {\r\n         return this.vOffsetField;\r\n      }\r\n      set\r\n      {\r\n         this.vOffsetField = value;\r\n      }\r\n   }\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   public string alignment\r\n   {\r\n      get\r\n      {\r\n         return this.alignmentField;\r\n      }\r\n      set\r\n      {\r\n         this.alignmentField = value;\r\n      }\r\n   }\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   [System.Xml.Serialization.XmlAttributeAttribute()]\r\n   public string src\r\n   {\r\n      get\r\n      {\r\n         return this.srcField;\r\n      }\r\n      set\r\n      {\r\n         this.srcField = value;\r\n      }\r\n   }\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   [System.Xml.Serialization.XmlAttributeAttribute()]\r\n   public string name\r\n   {\r\n      get\r\n      {\r\n         return this.nameField;\r\n      }\r\n      set\r\n      {\r\n         this.nameField = value;\r\n      }\r\n   }\r\n}\r\n\r\n\/\/\/ &lt;remarks\/&gt;\r\n[System.SerializableAttribute()]\r\n[System.ComponentModel.DesignerCategoryAttribute(\"code\")]\r\n[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]\r\npublic partial class widgetText\r\n{\r\n\r\n   private string nameField;\r\n\r\n   private byte hOffsetField;\r\n\r\n   private byte vOffsetField;\r\n\r\n   private string alignmentField;\r\n\r\n   private string onMouseUpField;\r\n\r\n   private string dataField;\r\n\r\n   private byte sizeField;\r\n\r\n   private string styleField;\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   public string name\r\n   {\r\n      get\r\n      {\r\n         return this.nameField;\r\n      }\r\n      set\r\n      {\r\n         this.nameField = value;\r\n      }\r\n   }\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   public byte hOffset\r\n   {\r\n      get\r\n      {\r\n         return this.hOffsetField;\r\n      }\r\n      set\r\n      {\r\n         this.hOffsetField = value;\r\n      }\r\n   }\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   public byte vOffset\r\n   {\r\n      get\r\n      {\r\n         return this.vOffsetField;\r\n      }\r\n      set\r\n      {\r\n         this.vOffsetField = value;\r\n      }\r\n   }\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   public string alignment\r\n   {\r\n      get\r\n      {\r\n         return this.alignmentField;\r\n      }\r\n      set\r\n      {\r\n         this.alignmentField = value;\r\n      }\r\n   }\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   public string onMouseUp\r\n   {\r\n      get\r\n      {\r\n         return this.onMouseUpField;\r\n      }\r\n      set\r\n      {\r\n         this.onMouseUpField = value;\r\n      }\r\n   }\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   [System.Xml.Serialization.XmlAttributeAttribute()]\r\n   public string data\r\n   {\r\n      get\r\n      {\r\n         return this.dataField;\r\n      }\r\n      set\r\n      {\r\n         this.dataField = value;\r\n      }\r\n   }\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   [System.Xml.Serialization.XmlAttributeAttribute()]\r\n   public byte size\r\n   {\r\n      get\r\n      {\r\n         return this.sizeField;\r\n      }\r\n      set\r\n      {\r\n         this.sizeField = value;\r\n      }\r\n   }\r\n\r\n   \/\/\/ &lt;remarks\/&gt;\r\n   [System.Xml.Serialization.XmlAttributeAttribute()]\r\n   public string style\r\n   {\r\n      get\r\n      {\r\n         return this.styleField;\r\n      }\r\n      set\r\n      {\r\n         this.styleField = value;\r\n      }\r\n   }\r\n}<\/pre>\n<p>By contrast, the online utility at <a href=\"https:\/\/xmltocsharp.azurewebsites.net\/\">https:\/\/xmltocsharp.azurewebsites.net\/<\/a> produces the following output from the same XML document:<\/p>\n<pre class=\"lang:c# decode:true \" >   \/* \r\n    Licensed under the Apache License, Version 2.0\r\n    \r\n    http:\/\/www.apache.org\/licenses\/LICENSE-2.0\r\n    *\/\r\nusing System;\r\nusing System.Xml.Serialization;\r\nusing System.Collections.Generic;\r\nnamespace Xml2CSharp\r\n{\r\n\t[XmlRoot(ElementName=\"window\")]\r\n\tpublic class Window {\r\n\t\t[XmlElement(ElementName=\"name\")]\r\n\t\tpublic string Name { get; set; }\r\n\t\t[XmlElement(ElementName=\"width\")]\r\n\t\tpublic string Width { get; set; }\r\n\t\t[XmlElement(ElementName=\"height\")]\r\n\t\tpublic string Height { get; set; }\r\n\t\t[XmlAttribute(AttributeName=\"title\")]\r\n\t\tpublic string Title { get; set; }\r\n\t}\r\n\r\n\t[XmlRoot(ElementName=\"image\")]\r\n\tpublic class Image {\r\n\t\t[XmlElement(ElementName=\"hOffset\")]\r\n\t\tpublic string HOffset { get; set; }\r\n\t\t[XmlElement(ElementName=\"vOffset\")]\r\n\t\tpublic string VOffset { get; set; }\r\n\t\t[XmlElement(ElementName=\"alignment\")]\r\n\t\tpublic string Alignment { get; set; }\r\n\t\t[XmlAttribute(AttributeName=\"src\")]\r\n\t\tpublic string Src { get; set; }\r\n\t\t[XmlAttribute(AttributeName=\"name\")]\r\n\t\tpublic string Name { get; set; }\r\n\t}\r\n\r\n\t[XmlRoot(ElementName=\"text\")]\r\n\tpublic class Text {\r\n\t\t[XmlElement(ElementName=\"name\")]\r\n\t\tpublic string Name { get; set; }\r\n\t\t[XmlElement(ElementName=\"hOffset\")]\r\n\t\tpublic string HOffset { get; set; }\r\n\t\t[XmlElement(ElementName=\"vOffset\")]\r\n\t\tpublic string VOffset { get; set; }\r\n\t\t[XmlElement(ElementName=\"alignment\")]\r\n\t\tpublic string Alignment { get; set; }\r\n\t\t[XmlElement(ElementName=\"onMouseUp\")]\r\n\t\tpublic string OnMouseUp { get; set; }\r\n\t\t[XmlAttribute(AttributeName=\"data\")]\r\n\t\tpublic string Data { get; set; }\r\n\t\t[XmlAttribute(AttributeName=\"size\")]\r\n\t\tpublic string Size { get; set; }\r\n\t\t[XmlAttribute(AttributeName=\"style\")]\r\n\t\tpublic string Style { get; set; }\r\n\t}\r\n\r\n\t[XmlRoot(ElementName=\"widget\")]\r\n\tpublic class Widget {\r\n\t\t[XmlElement(ElementName=\"debug\")]\r\n\t\tpublic string Debug { get; set; }\r\n\t\t[XmlElement(ElementName=\"window\")]\r\n\t\tpublic Window Window { get; set; }\r\n\t\t[XmlElement(ElementName=\"image\")]\r\n\t\tpublic Image Image { get; set; }\r\n\t\t[XmlElement(ElementName=\"text\")]\r\n\t\tpublic Text Text { get; set; }\r\n\t}\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Although this feature is available for years in Visual Studio, I only recently discovered this gem that allows rapid generation of C# classes from either JSON or XML.<\/p>\n<p>Here is how it works:<\/p>\n<ol>\n<li>Copy the JSON or XML code to the clipboard.<\/li>\n<li>In Visual Studio, go to <strong>Edit > Past Special<\/strong> and chose either <strong>Paste JSON as classes<\/strong> or <strong>Paste XML as classes<\/strong>.<\/li>\n<\/ol>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[52,10],"tags":[567,565,55,566],"class_list":["post-3179","post","type-post","status-publish","format-standard","hentry","category-tools","category-visual-studio","tag-codegen","tag-json","tag-visualstudio","tag-xml"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Marius Bancila\"\/>\n\t<meta name=\"keywords\" content=\"codegen,json,visualstudio,xml\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mariusbancila.ro\/blog\/2018\/11\/12\/json-and-xml-to-csharp-classes-in-visual-studio\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Marius Bancila&#039;s Blog | About code. Mostly on C++\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"JSON and XML to C# classes in Visual Studio\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mariusbancila.ro\/blog\/2018\/11\/12\/json-and-xml-to-csharp-classes-in-visual-studio\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2018-11-12T21:52:14+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2018-11-12T21:52:14+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"JSON and XML to C# classes in Visual Studio\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/11\\\/12\\\/json-and-xml-to-csharp-classes-in-visual-studio\\\/#article\",\"name\":\"JSON and XML to C# classes in Visual Studio\",\"headline\":\"JSON and XML to C# classes in Visual Studio\",\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/11\\\/paste_special_1.png\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/11\\\/12\\\/json-and-xml-to-csharp-classes-in-visual-studio\\\/#articleImage\",\"width\":574,\"height\":585},\"datePublished\":\"2018-11-12T23:52:14+02:00\",\"dateModified\":\"2018-11-12T23:52:14+02:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/11\\\/12\\\/json-and-xml-to-csharp-classes-in-visual-studio\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/11\\\/12\\\/json-and-xml-to-csharp-classes-in-visual-studio\\\/#webpage\"},\"articleSection\":\"Tools, Visual Studio, codegen, JSON, VisualStudio, XML\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/11\\\/12\\\/json-and-xml-to-csharp-classes-in-visual-studio\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"position\":2,\"name\":\"IT\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"position\":3,\"name\":\"Software\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/visual-studio\\\/#listItem\",\"name\":\"Visual Studio\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/visual-studio\\\/#listItem\",\"position\":4,\"name\":\"Visual Studio\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/visual-studio\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/11\\\/12\\\/json-and-xml-to-csharp-classes-in-visual-studio\\\/#listItem\",\"name\":\"JSON and XML to C# classes in Visual Studio\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/11\\\/12\\\/json-and-xml-to-csharp-classes-in-visual-studio\\\/#listItem\",\"position\":5,\"name\":\"JSON and XML to C# classes in Visual Studio\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/visual-studio\\\/#listItem\",\"name\":\"Visual Studio\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"Marius Bancila\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/11\\\/12\\\/json-and-xml-to-csharp-classes-in-visual-studio\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Marius Bancila\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/11\\\/12\\\/json-and-xml-to-csharp-classes-in-visual-studio\\\/#webpage\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/11\\\/12\\\/json-and-xml-to-csharp-classes-in-visual-studio\\\/\",\"name\":\"JSON and XML to C# classes in Visual Studio\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2018\\\/11\\\/12\\\/json-and-xml-to-csharp-classes-in-visual-studio\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2018-11-12T23:52:14+02:00\",\"dateModified\":\"2018-11-12T23:52:14+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"JSON and XML to C# classes in Visual Studio","description":"","canonical_url":"https:\/\/mariusbancila.ro\/blog\/2018\/11\/12\/json-and-xml-to-csharp-classes-in-visual-studio\/","robots":"max-image-preview:large","keywords":"codegen,json,visualstudio,xml","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mariusbancila.ro\/blog\/2018\/11\/12\/json-and-xml-to-csharp-classes-in-visual-studio\/#article","name":"JSON and XML to C# classes in Visual Studio","headline":"JSON and XML to C# classes in Visual Studio","author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2018\/11\/paste_special_1.png","@id":"https:\/\/mariusbancila.ro\/blog\/2018\/11\/12\/json-and-xml-to-csharp-classes-in-visual-studio\/#articleImage","width":574,"height":585},"datePublished":"2018-11-12T23:52:14+02:00","dateModified":"2018-11-12T23:52:14+02:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/mariusbancila.ro\/blog\/2018\/11\/12\/json-and-xml-to-csharp-classes-in-visual-studio\/#webpage"},"isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/2018\/11\/12\/json-and-xml-to-csharp-classes-in-visual-studio\/#webpage"},"articleSection":"Tools, Visual Studio, codegen, JSON, VisualStudio, XML"},{"@type":"BreadcrumbList","@id":"https:\/\/mariusbancila.ro\/blog\/2018\/11\/12\/json-and-xml-to-csharp-classes-in-visual-studio\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/#listItem","position":1,"name":"Home","item":"https:\/\/mariusbancila.ro\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","position":2,"name":"IT","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","position":3,"name":"Software","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/#listItem","name":"Visual Studio"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/#listItem","position":4,"name":"Visual Studio","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2018\/11\/12\/json-and-xml-to-csharp-classes-in-visual-studio\/#listItem","name":"JSON and XML to C# classes in Visual Studio"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2018\/11\/12\/json-and-xml-to-csharp-classes-in-visual-studio\/#listItem","position":5,"name":"JSON and XML to C# classes in Visual Studio","previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/#listItem","name":"Visual Studio"}}]},{"@type":"Organization","@id":"https:\/\/mariusbancila.ro\/blog\/#organization","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","url":"https:\/\/mariusbancila.ro\/blog\/"},{"@type":"Person","@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author","url":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/","name":"Marius Bancila","image":{"@type":"ImageObject","@id":"https:\/\/mariusbancila.ro\/blog\/2018\/11\/12\/json-and-xml-to-csharp-classes-in-visual-studio\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g","width":96,"height":96,"caption":"Marius Bancila"}},{"@type":"WebPage","@id":"https:\/\/mariusbancila.ro\/blog\/2018\/11\/12\/json-and-xml-to-csharp-classes-in-visual-studio\/#webpage","url":"https:\/\/mariusbancila.ro\/blog\/2018\/11\/12\/json-and-xml-to-csharp-classes-in-visual-studio\/","name":"JSON and XML to C# classes in Visual Studio","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/mariusbancila.ro\/blog\/2018\/11\/12\/json-and-xml-to-csharp-classes-in-visual-studio\/#breadcrumblist"},"author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"datePublished":"2018-11-12T23:52:14+02:00","dateModified":"2018-11-12T23:52:14+02:00"},{"@type":"WebSite","@id":"https:\/\/mariusbancila.ro\/blog\/#website","url":"https:\/\/mariusbancila.ro\/blog\/","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","inLanguage":"en-US","publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Marius Bancila's Blog | About code. Mostly on C++","og:type":"article","og:title":"JSON and XML to C# classes in Visual Studio","og:url":"https:\/\/mariusbancila.ro\/blog\/2018\/11\/12\/json-and-xml-to-csharp-classes-in-visual-studio\/","article:published_time":"2018-11-12T21:52:14+00:00","article:modified_time":"2018-11-12T21:52:14+00:00","twitter:card":"summary","twitter:title":"JSON and XML to C# classes in Visual Studio"},"aioseo_meta_data":{"post_id":"3179","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","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":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","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":"","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,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-03-18 21:04:15","updated":"2025-12-12 07:51:30","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"author_meta":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"featured_img":null,"jetpack_publicize_connections":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"Although this feature is available for years in Visual Studio, I only recently discovered this gem that allows rapid generation of C# classes from either JSON or XML. Here is how it works: Copy the JSON or XML code to the clipboard. In Visual Studio, go to Edit > Past Special and chose either Paste&hellip;","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/tools\/\" class=\"advgb-post-tax-term\">Tools<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">Visual Studio<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Tools<\/span>","<span class=\"advgb-post-tax-term\">Visual Studio<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">codegen<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">JSON<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">VisualStudio<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">XML<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">codegen<\/span>","<span class=\"advgb-post-tax-term\">JSON<\/span>","<span class=\"advgb-post-tax-term\">VisualStudio<\/span>","<span class=\"advgb-post-tax-term\">XML<\/span>"]}},"comment_count":"0","relative_dates":{"created":"Posted 8 years ago","modified":"Updated 8 years ago"},"absolute_dates":{"created":"Posted on November 12, 2018","modified":"Updated on November 12, 2018"},"absolute_dates_time":{"created":"Posted on November 12, 2018 11:52 pm","modified":"Updated on November 12, 2018 11:52 pm"},"featured_img_caption":"","series_order":"","jetpack_shortlink":"https:\/\/wp.me\/pYNdv-Ph","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/3179","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/comments?post=3179"}],"version-history":[{"count":7,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/3179\/revisions"}],"predecessor-version":[{"id":3188,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/3179\/revisions\/3188"}],"wp:attachment":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/media?parent=3179"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/categories?post=3179"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/tags?post=3179"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}