.NETでC#オブジェクトをJSON文字列にするにはどうすればいいですか?

こんな授業もあります。

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"
    }
}

(フォーマットなし).このリンク]1を見つけましたが、.NET 4にはない名前空間を使用しています。また、JSON.NETについても聞いたことがありますが、そのサイトは現在ダウンしているようですし、外部のDLLファイルを使用することにも抵抗があります。JSON文字列ライターを手動で作成する以外の選択肢はありますか?

**私たちは皆、ワンライナーが大好きですから。

... これはNewtonsoftのNuGetパッケージに依存しています。Newtonsoftは人気があり、デフォルトのシリアライザよりも優れています。

Newtonsoft.Json.JsonConvert.SerializeObject(new {foo = "bar"})

ドキュメントです。[JSONのシリアライズとデシリアライズ][1]

[1]: http://www.newtonsoft.com/json/help/html/SerializingJSON.htm

解説 (9)
ソリューション

JavaScriptSerializer][1]クラスを使用することができます(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);
    }
}
解説 (8)

DataContractJsonSerializer`クラスを使用します。MSDN1, MSDN2.

私の例です。こちらをご覧ください。

また、JavaScriptSerializerとは異なり、JSONの文字列からオブジェクトを安全にデシリアライズすることもできます。しかし、個人的にはやはりJson.NETの方が好きです。

解説 (8)