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)
DataContractJsonSerializer serializer =
new DataContractJsonSerializer(typeof(YourObjectType));
YourObjectType yourObject = (YourObjectType)serializer.ReadObject(jsonStream);
Vous pouvez également utiliser le JavaScriptSerializer
, mais le DataContractJsonSerializer
est censé mieux gérer les types complexes.
Curieusement, JavaScriptSerializer a été une fois déconseillé (en 3.5), puis ressuscité à cause d'ASP.NET MVC (en 3.5 SP1). Ce serait certainement suffisant pour ébranler ma confiance et me conduire à utiliser DataContractJsonSerializer
car il est dur pour WCF.
Utilisez simplement 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["something"];
Documentation: Parsing JSON Object using JObject.Parse
Je pense que c'est ce que vous voulez:
JavaScriptSerializer JSS = new JavaScriptSerializer();
T obj = JSS.Deserialize<T>(String);
Vous devez créer une structure qui représente les clés JSON (au cas où si vous la connaissez exactement), puis vous pouvez facilement désérialiser la 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;
};
}
le 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 un objet result
désérialisé
Je voudrais faire écho à la bibliothèque Json.NET, qui peut transformer la réponse JSON en un document XML. Avec le document XML, vous pouvez facilement interroger avec XPath et extraire les données dont vous avez besoin. Je trouve cela assez utile.