Prepare a Custom JSON Format in MVC or Remove JSON Key

Introduction 
 
This post explains how to remove a JSON key in JSON result in MVC or C# 
 
We can create our own converter class:
 
  1. public class JsonKeysConverter : JsonConverter  
  2. {  
  3.     public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)  
  4.     {  
  5.         Module o = (Module)value;  
  6.         JObject newObject = new JObject(new JProperty(o.Name, o.Permission));  
  7.         newObject.WriteTo(writer);  
  8.     }  
  9.   
  10.     public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)  
  11.     {  
  12.         throw new NotImplementedException("The type will skip the converter.");  
  13.     }  
  14.   
  15.     public override bool CanRead  
  16.     {  
  17.         get { return false; }  
  18.     }  
  19.   
  20.     public override bool CanConvert(Type objectType)  
  21.     {  
  22.         return true;  
  23.     }  
  24. }  
  25.   
  26. [JsonConverter(typeof(JsonKeysConverter))]  
  27. public class Module  
  28. {  
  29.     public string Name { getset; }  
  30.     public string[] Permission { getset; }  
  31. }  
  32.   
  33. public class Role  
  34. {  
  35.     public class Roles  
  36.     {  
  37.         public Dictionary<string, List<string>> Modules {getset;}  
  38.     }  
  39. }  
  40.   
  41. public static string json()  
  42. {  
  43.         var oRoles = new Roles();  
  44.         oRoles.modules = new Module[] {  
  45.             new Module(){  
  46.                 Name="Page-Profile",  
  47.                 Permission=new string[]{ "Edit","View","Delete"}  
  48.             },  
  49.             new Module(){  
  50.                 Name="User",  
  51.                 Permission=new string[]{ "Edit","View","Delete","Update"}  
  52.             }  
  53.         };  
  54.         var json = Newtonsoft.Json.JsonConvert.SerializeObject(oRoles);  
  55.       
  56.                   
  57.         Dictionary<string, List<string>> modules = new Dictionary<string, List<string>>();  
  58.         modules.Add("Page-Profile"new List<string>() { "Edit""View""Delete"});  
  59.         modules.Add("User"new List<string>() { "Edit""View""Delete""Update"});  
  60.           
  61.         return JsonConvert.SerializeObject(modules);   
Output
  • {"Page-Profile":["Edit","View","Delete"],"User":["Edit","View","Delete","Update"]}