J'ai du mal à comprendre comment y arriver.
Fondamentalement, nous avons une API, l'utilisateur envoie un JSON du format: (excusez le code s'il n'est pas parfait mais vous comprenez)
{"Profile": [{
"Name":"Joe",
"Last :"Doe",
"Client":
{
"ClientId":"1",
"Product":"Apple",
"Message":"Peter likes apples"
},
"Date":"2012-02-14",
}]}
Ok, je ne suis pas sûr que le format JSON soit correctement formaté, mais voici maintenant mon problème.
J'ai une classe appelée Profile
avec les paramètres Name, Last et un objet appartenant à l'un de ses membres, appelé Client, ainsi que la propriété Date.
Quelque chose comme ça:
public class Profile
{
public string Name {get; set;}
public string Last {get; set;}
public Client client {get; set;}
public DateTime dDate {get; set;}
}
Donc, fondamentalement, je ne sais pas comment saisir le JSON, puis le mapper sur mon objet.
Toute aide pour "m'aider" à comprendre serait très appréciée.
Vous pouvez utiliser Json.NET pour désérialiser votre chaîne json en tant que (avec quelques modifications à vos classes)
var yourObject = JsonConvert.DeserializeObject<Root>(jsonstring);
public class Root
{
public Profile[] Profile;
}
public class Profile
{
public string Name { get; set; }
public string Last { get; set; }
public Client Client { get; set; }
public DateTime Date { get; set; }
}
public class Client
{
public int ClientId;
public string Product;
public string Message;
}
Vous pouvez utiliser une bibliothèque JSON pour cela, par exemple Newtonsoft.Json qui est gratuit. Il mappera json automatiquement sur vos types.
Échantillon:
public static T Deserialize<T>(string json)
{
Newtonsoft.Json.JsonSerializer s = new JsonSerializer();
return s.Deserialize<T>(new JsonTextReader(new StringReader(json)));
}
Un paquet NuGet est également disponible.
Le moyen le plus simple que je connaisse est d'utiliser JSON.Net de newtonsoft . Pour faciliter la compréhension, je crée toujours des classes correspondantes en C # avec le même nom. Il est alors plus facile de le désérialiser . Par exemple, s’il s’agit d’un tableau d’objets en js, il mappera sur une liste d’objets portant le même nom en C # . Comme pour la date et l’heure. , c’est un peu délicat. Id effectue la validation côté client et Datetime.tryParse au niveau du serveur, il s’occupe des tirets ou des barres obliques.
var serializer = new JavaScriptSerializer();
List<abc> abcList = serializer.Deserialize<List<abc>>(PassedInJsonString);
DataContractJsonSerializer effectue le travail, mais il utilise un format plus sophistiqué pour la sérialisation DateTime.