J'ai des cours comme ceux-là :
class MyDate
{
int year, month, day;
}
class Lad
{
string firstName;
string lastName;
MyDate dateOfBirth;
}
Et je voudrais transformer un objet Lad
en une chaîne JSON comme celle-ci :
{
"firstName":"Markoff",
"lastName":"Chaney",
"dateOfBirth":
{
"year":"1901",
"month":"4",
"day":"30"
}
}
(sans la mise en forme). J'ai trouvé [ce lien][1], mais il utilise un espace de noms qui n'est pas dans .NET 4. J'ai également entendu parler de [JSON.NET][2], mais leur site semble être en panne en ce moment, et je n'ai pas envie d'utiliser des fichiers DLL externes. Existe-t-il d'autres options que la création manuelle d'un rédacteur de chaînes JSON ?
[1] : http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer(v=vs.110).aspx [2] : http://james.newtonking.com/projects/json-net.aspx
Puisque nous aimons tous les one liners
... celui-ci dépend du paquet NuGet de Newtonsoft, qui est populaire et meilleur que le sérialiseur par défaut.
Newtonsoft.Json.JsonConvert.SerializeObject(new {foo = "bar"})
Documentation : [Sérialisation et désérialisation de JSON][1]
[1] : http://www.newtonsoft.com/json/help/html/SerializingJSON.htm
Vous pouvez utiliser la classe [JavaScriptSerializer
][1] (ajoutez la référence à System.Web.Extensions
) :
using System.Web.Script.Serialization;
var json = new JavaScriptSerializer().Serialize(obj);
Un exemple complet :
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);
}
}
[1] : https://docs.microsoft.com/en-us/dotnet/api/system.web.script.serialization.javascriptserializer
Utilisez la classe DataContractJsonSerializer
: MSDN1, MSDN2.
Mon exemple : ICI.
Il peut aussi désérialiser en toute sécurité des objets à partir d'une chaîne JSON, contrairement à JavaScriptSerializer
. Mais personnellement, je préfère encore Json.NET.