Quelle est la fonction C # la plus simple pour analyser une chaîne JSON dans un objet et l'afficher (C # XAML WPF)? (par exemple objet avec 2 tableaux - arrA et arrB)
Réponses
Trop de publicités?Il suffit d'utiliser la bibliothèque Json.NET . Il vous permet d’analyser très facilement les chaînes au format Json:
JObject o = JObject.Parse(@"
{
""something"":""value"",
""jagged"":
{
""someother"":""value2""
}
}");
string something = (string)o.SelectToken("something");
DataContractJsonSerializer serializer =
new DataContractJsonSerializer(typeof(YourObjectType));
YourObjectType yourObject = (YourObjectType)serializer.ReadObject(jsonStream);
Vous pouvez également utiliser les JavaScriptSerializer
, mais DataContractJsonSerializer
est censé être plus apte à gérer des types complexes.
Curieusement, JavaScriptSerializer était une fois obsolète (en 3.5) puis ressuscité à cause d’ASP.NET MVC (en 3.5 SP1). Cela suffirait certainement à ébranler ma confiance en moi et à me conduire à utiliser DataContractJsonSerializer
car il est difficile à cuire pour la WCF.
Vous devez créer une structure qui représente les clés JSON (au cas où vous le sachiez exactement), puis désérialiser facilement une chaîne JSON dans votre structure. Dans mon exemple, j'ai désérialisé une réponse du serveur de messages Google Cloud:
class templateResponse
{
public String multicast_id;
public String success;
public String failure;
public String canonical_ids;
public Result[] results;
public class Result
{
public String message_id;
public String registration_id;
public String error;
};
}
JSON entrant était:
"\"multicast_id\":7400896764380883211,\"success\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[{\"message_id\":\"0:1351777805148960%39895cf0f9fd7ecd\"}]}"
Alors, utilisez
templateResponse result = new JavaScriptSerializer().Deserialize<templateResponse>(json);
et vous obtiendrez result
objet désérialisé