|
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;
namespace DynamicJsonParser
{
/// <summary>
/// Dynamic JSON object
/// </summary>
public sealed class DynamicJsonConverter : JavaScriptConverter
{
/// <summary>
/// When overridden in a derived class, converts the provided dictionary into an object of the specified type.
/// </summary>
/// <param name="dictionary">An <see cref="T:System.Collections.Generic.IDictionary`2"/> instance of property data stored as name/value pairs.</param>
/// <param name="type">The type of the resulting object.</param>
/// <param name="serializer">The <see cref="T:System.Web.Script.Serialization.JavaScriptSerializer"/> instance.</param>
/// <returns>
/// The deserialized object.
/// </returns>
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;
}
/// <summary>
/// When overridden in a derived class, builds a dictionary of name/value pairs.
/// </summary>
/// <param name="obj">The object to serialize.</param>
/// <param name="serializer">The object that is responsible for the serialization.</param>
/// <returns>
/// An object that contains key/value pairs that represent the object’s data.
/// </returns>
public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
{
throw new NotImplementedException();
}
/// <summary>
/// When overridden in a derived class, gets a collection of the supported types.
/// </summary>
/// <returns>An object that implements <see cref="T:System.Collections.Generic.IEnumerable`1"/> that represents the types supported by the converter.</returns>
public override IEnumerable<Type> SupportedTypes
{
get { return new ReadOnlyCollection<Type>(new List<Type>(new[] { typeof(object) })); }
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Check our technical blog for more tips and articles @ https://curbsidr.com/blog/