With Microsofts new extension methods it makes it easy to create helper methods that take care of the JSON grunt work.  Listed below is an example of how to implement JSON extension methods.

Helper Class

using System.IO;
using System.Text;
using System.Collections;
using System.Runtime.Serialization.Json;
    
public static class ExtJsJsonHelper 
    {
        public static string ToExtJsJson(this IEnumerable collection, string rootName)
        {
         DataContractJsonSerializer serializer = new DataContractJsonSerializer(collection.GetType());
            using (MemoryStream ms = new MemoryStream())
            {
                serializer.WriteObject(ms, collection);
                StringBuilder sb = new StringBuilder();
                sb.Append("{" + rootName + ":");
                sb.Append(Encoding.Default.GetString(ms.ToArray()));
                sb.Append("}");
                return sb.ToString();
            }
        }
        public static string ToExtJsJsonItem(this object item, string rootName)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(item.GetType());
            using (MemoryStream ms = new MemoryStream())
            {
                serializer.WriteObject(ms, item);
                StringBuilder sb = new StringBuilder();
                sb.Append("{success:true," + rootName + ":");
                sb.Append(Encoding.Default.GetString(ms.ToArray()));
                sb.Append("}");
                return sb.ToString();
            }
        }
        public static string ToExtJsJsonItem(this object item)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(item.GetType());
            using (MemoryStream ms = new MemoryStream())
            {
                serializer.WriteObject(ms, item);
                StringBuilder sb = new StringBuilder();
 
                sb.Append(Encoding.Default.GetString(ms.ToArray()));
 
                return sb.ToString();
            }
        }
 
        public static string ToExtJsJson(this IEnumerable collection, string rootName, string countName)
        {
 
            ICollection c = (ICollection)collection;
 
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(c.GetType());
            using (MemoryStream ms = new MemoryStream())
            {
                serializer.WriteObject(ms, c);
                StringBuilder sb = new StringBuilder();
                sb.Append("{" + countName + ":" + c.Count + ",");
                sb.Append(rootName + ":");
                sb.Append(Encoding.Default.GetString(ms.ToArray()));
                sb.Append("}");
                return sb.ToString();
            }
        }
 
  
        public static T FromJsonTo<T>(this string jsonString)
        {
            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
 
            MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(jsonString));
 
            T jsonObject = (T)ser.ReadObject(ms);
 
            return jsonObject;
        }
  
 
    }

Example of Object to JSON string

    public class GetAllCampaignsCommand : ICampaignServiceCommand
    {    
 
        public string Execute(NameValueCollection nameValueCollection)
        {
 
            ICampaignRepository repository=new CampaignDatabaseDataContext();
 
            List<Campaign> campaigns = repository.GetCampaigns();
            List<CampaignDTO> campaignsdto= new List<CampaignDTO>();
 
            foreach (Campaign c in campaigns)
            {
                campaignsdto.Add(c.ToDTO());
            }
 
            return  campaignsdto.ToExtJsJson("items", "totalCount");
        }
 
    }

 

Example of JSON string to Object

        public string Execute(NameValueCollection nameValueCollection)
        {
            string prospectjson = nameValueCollection["prospect"] ?? "";
 
            if (prospectjson.Length == 0)
            {
                throw new ArgumentException("Prospect data is required.");
            }
 
            ProspectDTO prospectdto = prospectjson.FromJsonTo<ProspectDTO>();
 
            int prospectid= CampaignController.AddProspect(prospectdto);
 
            return "success";
        }