using System.Collections.Generic;
using System.Data;
using System.Web.Script.Serialization;

namespace MESWebSite.Tool
{
    public class JSONTools
    {
        public static List<T> JSONStringToList<T>(string JsonStr)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            serializer.MaxJsonLength = 0x7fffffff;
            return serializer.Deserialize<List<T>>(JsonStr);
        }

        public static DataSet JsonToDataSet(string Json)
        {
            try
            {
                DataSet set = new DataSet();
                JavaScriptSerializer serializer = new JavaScriptSerializer();
                serializer.MaxJsonLength = 0x7fffffff;
                Dictionary<string, object> dictionary = (Dictionary<string, object>)serializer.DeserializeObject(Json);
                foreach (KeyValuePair<string, object> pair in dictionary)
                {
                    DataTable table = new DataTable(pair.Key);
                    object[] objArray = (object[])pair.Value;
                    foreach (object obj3 in objArray)
                    {
                        Dictionary<string, object> dictionary2 = (Dictionary<string, object>)obj3;
                        DataRow row = table.NewRow();
                        foreach (KeyValuePair<string, object> pair2 in dictionary2)
                        {
                            if (!table.Columns.Contains(pair2.Key))
                            {
                                table.Columns.Add(pair2.Key.ToString());
                                row[pair2.Key] = pair2.Value;
                            }
                            else
                            {
                                row[pair2.Key] = pair2.Value;
                            }
                        }
                        table.Rows.Add(row);
                    }
                    set.Tables.Add(table);
                }
                return set;
            }
            catch
            {
                return null;
            }
        }

        public static string ModifyInfoJSON(string people, string date)
        {
            return ("{\"People\":\"" + people + "\",\"Date\":\"" + date + "\"}");
        }

        public static T ScriptDeserialize<T>(string json) where T : new()
        {
            T local = new T();
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            serializer.MaxJsonLength = 0x7fffffff;
            return serializer.Deserialize<T>(json);
        }

        public static string ScriptSerialize<T>(T input)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            serializer.MaxJsonLength = 0x7fffffff;
            return serializer.Serialize(input);
        }

        public static string ScriptSerialize(object input)
        {
            return Newtonsoft.Json.JsonConvert.SerializeObject(input);
        }

        public static int StringToInt(string str)
        {
            int result = 0;
            if (string.IsNullOrEmpty(str))
            {
                return result;
            }
            if (int.TryParse(str.Trim(), out result))
            {
                return result;
            }
            return result;
        }
    }
}