Ho classi come queste:
class MyDate
{
int year, month, day;
}
class Lad
{
string firstName;
string lastName;
MyDate dateOfBirth;
}
E vorrei trasformare un oggetto Lad
in una stringa JSON come questa:
{
"firstName":"Markoff",
"lastName":"Chaney",
"dateOfBirth":
{
"year":"1901",
"month":"4",
"day":"30"
}
}
(senza la formattazione). Ho trovato questo link, ma usa un namespace che non è in .NET 4. Ho anche sentito parlare di JSON.NET, ma il loro sito sembra essere giù al momento, e non mi piace usare file DLL esterni. Ci sono altre opzioni oltre a creare manualmente uno scrittore di stringhe JSON?
Poiché tutti amiamo le one liners
... questo dipende dal pacchetto NuGet di Newtonsoft, che è popolare e migliore del serializzatore predefinito.
Newtonsoft.Json.JsonConvert.SerializeObject(new {foo = "bar"})
Documentazione: Serializzare e Deserializzare JSON
Potresti usare la classe JavaScriptSerializer
(aggiungi il riferimento a System.Web.Extensions
):
using System.Web.Script.Serialization;
var json = new JavaScriptSerializer().Serialize(obj);
Un esempio completo:
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);
}
}
Usa la classe DataContractJsonSerializer
: MSDN1, MSDN2.
Il mio esempio: QUI.
Può anche deserializzare in modo sicuro gli oggetti da una stringa JSON, a differenza di JavaScriptSerializer
. Ma personalmente preferisco ancora Json.NET.