Thursday, 14 February 2019

Convert Json String To DataTable C sharpasp .net

============================================
DataTable [] dt;
   string JsonString = string.Empty;
   ConvertJsonStringToDataTable jDt = new ConvertJsonStringToDataTable();

 JsonString = ui_lbl_JsonString.Text;
      dt = jDt.JsonStringToDataTable(JsonString);

=================Logic======================
using System;
using System.Collections.Generic;
using System.Data;
using System.Text.RegularExpressions;

public class ConvertJsonStringToDataTable
{
    public DataTable[] JsonStringToDataTable(string jsonString)
   {
      DataTable dt = new DataTable();
      DataTable dt1 = new DataTable();
      string[] jsonStringArray = Regex.Split(jsonString.Replace("[", "").Replace("]", ""), "},{");
      List<string> ColumnsName = new List<string>();
      foreach (string jSA in jsonStringArray)
      {
         string[] jsonStringData = Regex.Split(jSA.Replace("{", "").Replace("}", ""), ",");
         foreach (string ColumnsNameData in jsonStringData)
         {
            try
            {
               int idx = ColumnsNameData.IndexOf(":");
               string ColumnsNameString = ColumnsNameData.Substring(0, idx - 1).Replace("\"", "");
               if (!ColumnsName.Contains(ColumnsNameString))
               {
                   if (!ColumnsName.Contains("\\"))
                   {
                       ColumnsName.Add(ColumnsNameString);
                   }
               }
            }
            catch (Exception ex)
            {
               throw new Exception(string.Format("Error Parsing Column Name : {0}", ColumnsNameData));
            }
         }
         break;
      }
      foreach (string AddColumnName in ColumnsName)
      {
          if (AddColumnName.Contains("\\"))
          {
              dt1.Columns.Add(AddColumnName.Replace("\\",""));
          }
          else
          {
              dt.Columns.Add(AddColumnName);
          }
         
      }
      foreach (string jSA in jsonStringArray)
      {
         string[] RowData = Regex.Split(jSA.Replace("{", "").Replace("}", ""), ",");
         DataRow nr = dt.NewRow();
         foreach (string rowData in RowData)
         {
            try
            {
               int idx = rowData.IndexOf(":");
               string RowColumns = rowData.Substring(0, idx - 1).Replace("\"", "");
               string RowDataString = rowData.Substring(idx + 1).Replace("\"", "");
               if (!RowDataString.Contains("\\"))
               {
                   nr[RowColumns] = RowDataString;
               }
            }
            catch (Exception ex)
            {
               continue;
            }
         }
         dt.Rows.Add(nr);
      }
      foreach (string jSA in jsonStringArray)
      {
          string[] RowData = Regex.Split(jSA.Replace("{", "").Replace("}", ""), ",");
          DataRow nr = dt1.NewRow();
          foreach (string rowData in RowData)
          {
              try
              {
                  int idx = rowData.IndexOf(":");
                  string RowColumns = rowData.Substring(0, idx - 1).Replace("\"", "");
                  string RowDataString = rowData.Substring(idx + 1).Replace("\"", "");
                  if (RowDataString.Contains("\\"))
                  {
                      nr[RowColumns.Replace("\\", "")] = RowDataString.Replace("\\", "");
                  }
               
              }
              catch (Exception ex)
              {
                  continue;
              }
          }
          dt1.Rows.Add(nr);
      }
      return new DataTable[] { dt, dt1 };
   }
}

No comments:

Post a Comment