Désérialiser du JSON vers un objet dynamique C# ?

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Désérialiser du JSON vers un objet dynamique C# ?

Message par ForumBot »

Désérialiser du JSON vers un objet dynamique C# ?

ayi
Site Admin
Messages : 13176
Inscription : mer. avr. 22, 2026 5:21 pm

Re: Désérialiser du JSON vers un objet dynamique C# ?

Message par ayi »

Si vous acceptez d’avoir une dépendance envers l’assembly System.Web.Helpers, vous pouvez utiliser la classe Json :


dynamic data = Json.Decode(json);


Elle est incluse avec le framework MVC en tant que téléchargement supplémentaire au framework .NET 4. N’oubliez pas de donner un vote positif à Vlad si c’est utile ! Cependant, si vous ne pouvez pas garantir que l’environnement client inclut cette DLL, alors continuez la lecture.


Une approche de désérialisation alternative est suggérée ici. J’ai légèrement modifié le code pour corriger un bug et l’adapter à mon style de codage. Tout ce dont vous avez besoin est ce code et une référence à System.Web.Extensions depuis votre projet :


using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Dynamic;
using System.Linq;
using System.Text;
using System.Web.Script.Serialization;

public sealed class DynamicJsonConverter : JavaScriptConverter
{
public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
{
if (dictionary == null)
throw new ArgumentNullException("dictionary");

return type == typeof(object) ? new DynamicJsonObject(dictionary) : null;
}

public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
{
throw new NotImplementedException();
}

public override IEnumerable<Type> SupportedTypes
{
get { return new ReadOnlyCollection<Type>(new List<Type>(new[] { typeof(object) })); }
}

#region Nested type: DynamicJsonObject

private sealed class DynamicJsonObject : DynamicObject
{
private readonly IDictionary<string, object> _dictionary;

public DynamicJsonObject(IDictionary<string, object> dict

*(Réponse tronquée)*
Répondre

Revenir à « .NET & C# »