1. ホーム
  2. c#

[解決済み] .NETでC#オブジェクトをJSON文字列に変換するには?

2022-03-16 19:09:51

質問

このようなクラスがあります。

class MyDate
{
    int year, month, day;
}

class Lad
{
    string firstName;
    string lastName;
    MyDate dateOfBirth;
}

そして Lad オブジェクトを JSON のような文字列を作成します。

{
    "firstName":"Markoff",
    "lastName":"Chaney",
    "dateOfBirth":
    {
        "year":"1901",
        "month":"4",
        "day":"30"
    }
}

(書式なし)。私が見つけたのは このリンク にない名前空間を使っています。 .NET 4 . また JSON.NET しかし、彼らのサイトは現在ダウンしているようで、外部のDLLファイルを使用するのは気が進みません。

を手動で作成する以外に選択肢はありますか? JSON 文字列ライター

解決方法は?

注意事項

マイクロソフトでは、JavaScriptSerializer を使用しないことを推奨しています。

ドキュメントページのヘッダーをご覧ください。

.NET Framework 4.7.2以降のバージョンでは、シリアライズとデシリアライズにSystem.Text.Json名前空間のAPIを使用します。.NET Frameworkの以前のバージョンでは、Newtonsoft.Jsonを使用してください。


オリジナルの回答です。

を使用することができます。 JavaScriptSerializer クラスへの参照を追加します。 System.Web.Extensions ):

using System.Web.Script.Serialization;

var json = new JavaScriptSerializer().Serialize(obj);

完全な例です。

using System;
using System.Web.Script.Serialization;

public class MyDate
{
    public int year;
    public int month;
    public int day;
}

public class Lad
{
    public string firstName;
    public string lastName;
    public MyDate dateOfBirth;
}

class Program
{
    static void Main()
    {
        var obj = new Lad
        {
            firstName = "Markoff",
            lastName = "Chaney",
            dateOfBirth = new MyDate
            {
                year = 1901,
                month = 4,
                day = 30
            }
        };
        var json = new JavaScriptSerializer().Serialize(obj);
        Console.WriteLine(json);
    }
}