這陣子開發工作上常遇到要與第三方做串接的服務,第三方服務提供的技術文件中格式不外乎以 Json 或是 XML 兩種為主,往往都要針對這些屬性自己建立新的類別 Model 的動作,如果 XML 或 JSON 屬性欄位多的話要花不少時間在處理建立對應類別上,但不用擔心,號稱地表上最強的開發 IDE Visual Studio 從 2012 開始提供 Json 與 XML 轉 Class 類別的功能,操作與使用上相當簡單,這篇就來介紹此功能的使用方式。
使用方式
打開 Visual Studio 點選左上角 Edit > Paste Special,就可以看到可以將剪貼簿內容的文字轉換為 Json 或是 XML 的選項,以下就針對兩個選項做簡單的介紹與 Sample
Json 轉 Class
Json 檔案範例是從 .NET Core 專案的 appsetting.json 抓下來,如下所示
{ "ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-ASPCoreLab;Trusted_Connection=True;MultipleActiveResultSets=true" }, "Logging": { "LogLevel": { "Default": "Warning" } }, "AllowedHosts": "*" }Step 1 : 打開 Visual Studio 2017,建立一個新的 Class 類別,接著複製要轉換的 Json 檔案
Step 2 : Edit > Paste Special > Paste Json to Class
public class Rootobject { public Connectionstrings ConnectionStrings { get; set; } public Logging Logging { get; set; } public string AllowedHosts { get; set; } } public class Connectionstrings { public string DefaultConnection { get; set; } } public class Logging { public Loglevel LogLevel { get; set; } } public class Loglevel { public string Default { get; set; } }會產生 RootObject 類別物件,其中包含要轉換 Json 類別的屬性 connectionString、logging、Loglevel 其相對應的 Class 類別
XML 轉 Class
自己定義一個簡單的 XML 檔案,如下所示
<card> <name>Marcus Tung</name> <title>打雜工程師</title> <email>iamnewuser@gmail.com</email> <phone>886 82 5252</phone> <logo url="widget.gif"/> </card>Step 1 : 打開 Visual Studio 2017,建立一個新的 Class 類別,接著複製要轉換的 XML 檔案
Step 2 : Edit > Paste Special > Paste XML to Class
// NOTE: Generated code may require at least .NET Framework 4.5 or .NET Core/Standard 2.0. /// <remarks/> [System.SerializableAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)] public partial class card { private string nameField; private string titleField; private string emailField; private string phoneField; private cardLogo logoField; /// <remarks/> public string name { get { return this.nameField; } set { this.nameField = value; } } /// <remarks/> public string title { get { return this.titleField; } set { this.titleField = value; } } /// <remarks/> public string email { get { return this.emailField; } set { this.emailField = value; } } /// <remarks/> public string phone { get { return this.phoneField; } set { this.phoneField = value; } } /// <remarks/> public cardLogo logo { get { return this.logoField; } set { this.logoField = value; } } } /// <remarks/> [System.SerializableAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class cardLogo { private string urlField; /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] public string url { get { return this.urlField; } set { this.urlField = value; } } }會產生 Rool XML Card 類別物件,並且會自動幫你預設定義好 attribute,像是 Serializable、XML Type 等相關定義,Card 底下的五個屬性有分別定義相關的 get / set,算是非常實用 !
使用地表上最強 IDE 開發十分方便,連這小細節在早期就開始提供,但知道此功能的人似乎不多有點可惜就是,日後如果有遇到一些不錯的功能在陸續介紹在 Blog 上給需要的朋友,Happy Coding !!
0 意見:
張貼留言