Eu tenho aulas como estas:
class MyDate
{
int year, month, day;
}
class Lad
{
string firstName;
string lastName;
MyDate dateOfBirth;
}
E eu gostaria de transformar um objeto 'Lad' em um fio JSON como este:
{
"firstName":"Markoff",
"lastName":"Chaney",
"dateOfBirth":
{
"year":"1901",
"month":"4",
"day":"30"
}
}
(sem a formatação). Eu encontrei este link, mas ele usa um namespace que's não está em .NET 4. Eu também ouvi sobre JSON.NET, mas o site deles parece estar em baixo no momento, e I'não estou interessado em usar arquivos DLL externos. Existem outras opções além de criar manualmente um escritor de strings JSON?
**Desde que todos nós amamos um só forro***
... este depende do pacote Newtonsoft NuGet, que é popular e melhor do que o serializador padrão.
Newtonsoft.Json.JsonConvert.SerializeObject(new {foo = "bar"})
Documentação: Serialização e desserialização do JSON
Você poderia utilizar a classe JavaScriptSerializer
(adicionar referência a `System.Web.Extensions'):
using System.Web.Script.Serialization;
var json = new JavaScriptSerializer().Serialize(obj);
Um exemplo 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);
}
}
Utilize a classe `DataContractJsonSerializer': MSDN1, MSDN2.
O meu exemplo: AQUI.
Ele também pode deserializar com segurança objetos de uma string JSON, ao contrário do `JavaScriptSerializer'. Mas pessoalmente eu ainda prefiro Json.NET.