Jeg har sådanne kurser:
class MyDate
{
int year, month, day;
}
class Lad
{
string firstName;
string lastName;
MyDate dateOfBirth;
}
Og jeg vil gerne lave et Lad
-objekt om til en JSON-streng som denne:
{
"firstName":"Markoff",
"lastName":"Chaney",
"dateOfBirth":
{
"year":"1901",
"month":"4",
"day":"30"
}
}
(uden formatering). Jeg fandt dette link, men det bruger et namespace, der ikke findes i .NET 4. Jeg har også hørt om JSON.NET, men deres hjemmeside ser ud til at være nede i øjeblikket, og jeg er ikke vild med at bruge eksterne DLL-filer. Er der andre muligheder end at oprette en JSON-strengskriver manuelt?
Da vi alle elsker one liners
... denne er afhængig af Newtonsoft NuGet-pakken, som er populær og bedre end standardserialisatoren.
Newtonsoft.Json.JsonConvert.SerializeObject(new {foo = "bar"})
Dokumentation: Serialisering og deserialisering af JSON
Du kan bruge klassen JavaScriptSerializer
(tilføj henvisning til System.Web.Extensions
):
using System.Web.Script.Serialization;
var json = new JavaScriptSerializer().Serialize(obj);
Et fuldstændigt eksempel:
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);
}
}
Brug klassen DataContractJsonSerializer
: MSDN1, MSDN2.
Mit eksempel: HERE.
Den kan også sikkert deserialisere objekter fra en JSON-streng, i modsætning til JavaScriptSerializer
. Men personligt foretrækker jeg stadig Json.NET.