Hogyan alakíthatok át egy C# objektumot JSON karakterlánccá a .NET-ben?

Nekem is vannak ilyen óráim:

class MyDate
{
    int year, month, day;
}

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

És szeretnék egy Lad objektumot egy ilyen JSON sztringgé alakítani:

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

(formázás nélkül). Találtam ezt a linket, de olyan névteret használ, amely nincs benne a .NET 4-ben. Hallottam a JSON.NET-ről is, de az oldaluk úgy tűnik, hogy jelenleg nem elérhető, és nem szeretnék külső DLL fájlokat használni. Vannak más lehetőségek a JSON string író kézi létrehozásán kívül?

Mert mindannyian szeretjük az egysorosokat

... ez a Newtonsoft NuGet csomagjától függ, ami népszerű és jobb, mint az alapértelmezett serializer.

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

Dokumentáció: JSON szerializálása és deserializálása

Kommentárok (9)
Megoldás

Használhatja a JavaScriptSerializer osztályt (adjon hozzá hivatkozást a System.Web.Extensions osztályra):

using System.Web.Script.Serialization;
var json = new JavaScriptSerializer().Serialize(obj);

Egy teljes példa:

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);
    }
}
Kommentárok (8)

Használja az DataContractJsonSerializer osztályt: MSDN1, MSDN2.

Az én példám: ITT.

A JavaScriptSerializerrel ellentétben képes biztonságosan deserializálni objektumokat JSON stringből is. De személy szerint én még mindig jobban szeretem a Json.NET.

Kommentárok (8)