[VS] JSON, XML から クラスの定義を自動生成する方法

[VS] JSON, XML から クラスの定義を自動生成する方法

JSON, XML から クラスの定義を自動生成する方法

動作確認環境は Visual Studio 2015, C# です。

Visual Studio の貼り付け機能の1つに、JSONもしくはXMLからクラス定義を自動生成して貼り付けてくれる機能があります。

JSON

例えば次のようなJSON形式のテキストをクリップボードにコピーします。

{
  "name": "太郎",
  "age": 20,
  "Address": {
    "PostCode": "000-0000",
    "Address1": "xxxxxx",
    "Address2": "xxxxxx"
  }
}

メニューの「編集」-「型式を選択して貼り付け」-「JSON をクラスとして貼り付ける」を選択すると以下のようなクラス定義の構文がエディタ上に張り付けられます。

public class Rootobject
{
    public string name { get; set; }
    public int age { get; set; }
    public Address Address { get; set; }
}

public class Address
{
    public string PostCode { get; set; }
    public string Address1 { get; set; }
    public string Address2 { get; set; }
}

適宜編集すればいい感じに使えそうです。

XML

XMLのテキストからでも同じ手順でクラス定義を生成できます。

メニューの「編集」-「型式を選択して貼り付け」-「XML をクラスとして貼り付ける」を選択するとクラスを生成できます。

<Root>
  <name>太郎</name>
  <age>20</age>
  <Address>
    <PostCode>000-0000</PostCode>
    <Address1>xxxxxx</Address1>
    <Address2>xxxxxx</Address2>
  </Address>
</Root>

上記テキスト体と以下のように生成されます。

/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class Root
{

    private string nameField;

    private byte ageField;

    private RootAddress addressField;

    /// <remarks/>
    public string name
    {
        get
        {
            return this.nameField;
        }
        set
        {
            this.nameField = value;
        }
    }

    /// <remarks/>
    public byte age
    {
        get
        {
            return this.ageField;
        }
        set
        {
            this.ageField = value;
        }
    }

    /// <remarks/>
    public RootAddress Address
    {
        get
        {
            return this.addressField;
        }
        set
        {
            this.addressField = value;
        }
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class RootAddress
{

    private string postCodeField;

    private string address1Field;

    private string address2Field;

    /// <remarks/>
    public string PostCode
    {
        get
        {
            return this.postCodeField;
        }
        set
        {
            this.postCodeField = value;
        }
    }

    /// <remarks/>
    public string Address1
    {
        get
        {
            return this.address1Field;
        }
        set
        {
            this.address1Field = value;
        }
    }

    /// <remarks/>
    public string Address2
    {
        get
        {
            return this.address2Field;
        }
        set
        {
            this.address2Field = value;
        }
    }
}

XMLだとシリアライズ用の属性などが付与されてやたらと仰々しくなりました。

以上。

C#カテゴリの最新記事