Miten muutan C#-olion JSON-merkkijonoksi .NETissä?

Minulla on tällaisia kursseja:

class MyDate
{
    int year, month, day;
}

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

Ja haluaisin muuttaa Lad-olion JSON-merkkijonoksi näin:

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

(ilman muotoilua). Löysin tämän linkin, mutta se käyttää nimiavaruutta, jota ei ole .NET 4:ssä. Kuulin myös JSON.NET, mutta heidän sivustonsa näyttää olevan tällä hetkellä alhaalla, enkä halua käyttää ulkoisia DLL-tiedostoja. Onko muita vaihtoehtoja kuin JSON-merkkijonon kirjoittajan luominen manuaalisesti?

Koska me kaikki rakastamme yhden lauseen repliikkejä

... tämä on riippuvainen Newtonsoftin NuGet-paketista, joka on suosittu ja parempi kuin oletusserialisaattori.

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

Dokumentaatio: JSON:n serialisointi ja deserialisointi.

Kommentit (9)
Ratkaisu

Voit käyttää JavaScriptSerializer -luokkaa (lisää viittaus System.Web.Extensions-luokkaan):

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

Täydellinen esimerkki:

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);
    }
}
Kommentit (8)

Käytä DataContractJsonSerializer-luokkaa: MSDN1, MSDN2.

Oma esimerkkini: TÄSSÄ.

Se voi myös turvallisesti deserialisoida objekteja JSON-merkkijonosta, toisin kuin JavaScriptSerializer. Mutta itse pidän silti enemmän Json.NET.

Kommentit (8)