1. An interface object
2. List of objects
3. IList of objects
4. List of interface
5. IList of interface
So, you can utilize the generic code below to solve the problem:
You need to install Newtonsoft.JSON to use this code:
using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; namespace Utilities.Core { public static class JsonSerializer<T> where T : class { public static string ToJson(T objectToSerialize) { if (null == objectToSerialize) return null; return JsonConvert.SerializeObject(objectToSerialize); } public static T ToObject(string json) { if (string.IsNullOrWhiteSpace(json)) return null; return JsonConvert.DeserializeObject<T>(json); } public static List<T> ToObjectList(string json) { if (string.IsNullOrWhiteSpace(json)) return null; return JsonConvert.DeserializeObject<List<T>>(json); } } public static class JsonSerializer<TImplementation, TInterface> where TImplementation : class, TInterface { public static string ToJson(TInterface objectToSerialize) { if (null == objectToSerialize) return null; return JsonConvert.SerializeObject(objectToSerialize); } public static TInterface ToObject(string json) { return JsonSerializer<TImplementation>.ToObject(json); } public static IList<TInterface> ToObjectList(string json) { if (string.IsNullOrWhiteSpace(json)) return null; var results = JsonConvert.DeserializeObject<List<TImplementation>>(json); IList<TInterface> objectList = results.Select(item => (TInterface) item).ToList(); return objectList; } } }