コード例 #1
0
 internal bool FromJsonUrl <MyTable>(MyTable table, string jsonStr) where MyTable : ITable, new()
 {
     try
     {
         MyTable table2 = FromJsonUrl <MyTable>(jsonStr);
     }
     catch (Exception ex)
     {
         ConsoleService.Error("FromJson204:" + ex.Message + "|" + jsonStr);
         return(false);
     }
     return(true);
 }
コード例 #2
0
        /// <summary>
        /// 获得 键值对 Dictionary(key,value)
        /// </summary>
        /// <param name="jsonStr"></param>
        /// <returns></returns>
        public static Dictionary <string, object> FromJsonUrlDetail(string jsonStr)
        {
            Dictionary <string, object> mytable = new Dictionary <string, object>();
            int count = 0;

            try
            {
                StringBuilder output = new StringBuilder(jsonStr);
                int           head   = jsonStr.IndexOf("|");
                if (head != 0)
                {
                    count = Convert.ToInt32(jsonStr.Substring(0, head).Trim());
                }
                if (count == 0)
                {
                    return(mytable);
                }
                output.Remove(0, head + 1);
                string[] ps = output.ToString().Split('|');
                foreach (string p in ps)
                {
                    if (p.Length > 0)
                    {
                        string[] names = p.Split('`');
                        if (names.Length == 2)
                        {
                            string fieldname = names[0];
                            string value     = names[1];
                            mytable.Add(fieldname, value);
                            count--;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ConsoleService.Error("FromJsonDetail:" + ex.Message + ex.StackTrace);
            }
            if (count < 0)
            {
                ConsoleService.Warn("FromJson's crc is wrong, count = " + count);
            }
            return(mytable);
        }
コード例 #3
0
        /// <summary>
        /// 手工建立json对象字符串
        /// </summary>
        public string ToJson(string tbname, Dictionary <string, string> dics)
        {
            StringBuilder output = new StringBuilder(256);

            try
            {
                int count = 0;
                foreach (string key in dics.Keys)
                {
                    object value = dics[key];
                    if (key != null && value != null)
                    {
                        output.Append(key).Append("`").Append(value).Append("|");
                        count++;
                    }
                }
                output.Insert(0, count + "|");//校验位
            }
            catch (Exception ex)
            {
                ConsoleService.Error("ToJson:" + ex.Message + ex.StackTrace);
            }
            return(output.ToString());
        }
コード例 #4
0
        public string ToJsonZh <MyTable>(MyTable mytable) where MyTable : ITable, new()
        {
            StringBuilder output = new StringBuilder("{");
            int           count  = 0;

            try
            {
                List <AttributeItem> attrs = mytable.af_GetAttributes();
                foreach (AttributeItem attr in attrs)
                {
                    object value = attr.ZhName;
                    //if (value != null)
                    {
                        string value1 = Convert.ToString(value);
                        //if ((length > 0 && value1.Length > length) || value1.Length > Length)
                        //{
                        //    value1 = StringHelper.CutString(value1, length);
                        //}
                        value1 = filterJson(value1);
                        if (isDebug)
                        {
                            output.Append("\"").Append(attr.FieldName + "_zh").Append("\"").Append(":").Append("\"").Append(value1).Append("\"").Append(",");
                        }
                        count++;
                    }
                }
                output.Append(mytable.af_JsonAppend());//.Append(",");
            }
            catch (Exception ex)
            {
                ConsoleService.Error("ToJson235:" + ex.StackTrace);
            }
            StringBuilder output1 = new StringBuilder(output.ToString().TrimEnd(',')).Append("}");

            return(output1.ToString());
        }
コード例 #5
0
        /// <summary>
        /// 为url写的缩略型json串
        /// </summary>
        /// <typeparam name="MyTable"></typeparam>
        /// <param name="mytable"></param>
        /// <returns></returns>
        public string ToJsonUrl <MyTable>(MyTable mytable, int length) where MyTable : ITable, new()
        {
            StringBuilder output = new StringBuilder(256);
            int           count  = 0;

            try
            {
                List <AttributeItem> attrs = mytable.af_GetAttributes();
                foreach (AttributeItem attr in attrs)
                {
                    object value = mytable.GetValue(attr);
                    //if (value != null)
                    {
                        string value1 = Convert.ToString(value);
                        if ((length > 0 && value1.Length > length) || value1.Length > Length)
                        {
                            value1 = "";
                        }

                        if (value1 != null && value1.Contains("|"))
                        {
                            value1 = StringHelper.ReplaceNonCase(value1, "|", replaceFenGe);
                        }

                        output.Append(attr.FieldName).Append("`").Append(value1).Append("|");
                        count++;
                    }
                }
            }
            catch (Exception ex)
            {
                ConsoleService.Error("ToJson235:" + ex.StackTrace);
            }
            try
            {
                if (!string.IsNullOrEmpty(mytable.af_WhereSQL))
                {
                    string where1 = mytable.af_WhereSQL;
                    if (where1.Contains("|"))
                    {
                        where1 = StringHelper.ReplaceNonCase(where1, "|", replaceFenGe);
                    }
                    output.Append("af_where").Append("`").Append(where1).Append("|");
                    count++;
                }
                if (!string.IsNullOrEmpty(mytable.af_TopText))
                {
                    output.Append("af_top").Append("`").Append(mytable.af_TopText).Append("|");
                    count++;
                }
                if (mytable.af_PageByAttributeItem != null)
                {
                    string orderstr = mytable.af_PageByAttributeItem.LongName;
                    output.Append("af_pageby").Append("`").Append(orderstr).Append("|");
                    count++;
                }
                if (mytable.af_PageByOrder != default(Order))
                {
                    int orderstr = (int)mytable.af_PageByOrder;
                    output.Append("af_pagebyorder").Append("`").Append(orderstr).Append("|");
                    count++;
                }
                if (mytable.af_OrderByItem != null && mytable.af_OrderByItem.Count > 0)
                {
                    string orderstr = OrderByItem.Serialize(mytable.af_OrderByItem);
                    output.Append("af_orderby").Append("`").Append(orderstr).Append("|");
                    count++;
                }
            }
            catch (Exception ex)
            {
                ConsoleService.Error("ToJson270:" + ex.StackTrace);
            }

            output.Insert(0, count + "|");              //校验位
            output.Insert(0, mytable._TableName + "|"); //表名
            return(output.ToString().TrimEnd('|'));
        }
コード例 #6
0
        public string ToJsonKeyValue <MyTable>(MyTable mytable, int length) where MyTable : ITableImplement, new()
        {
            StringBuilder output = new StringBuilder(256);
            int           count  = 0;

            try
            {
                List <object>   values = new List <object>();
                AttributeItem[] attrs  = mytable.af_GetAvailableAttributeItem(ref values);
                for (int i = 0; i < attrs.Length; i++)
                {
                    AttributeItem attr  = attrs[i];
                    object        value = values[i];
                    //if (value != null)
                    {
                        string value1 = Convert.ToString(value);
                        if (value1.Length == 4)
                        {
                            if (value1 == "True")
                            {
                                value1 = "true";
                            }
                        }
                        else if (value1.Length == 5)
                        {
                            if (value1 == "False")
                            {
                                value1 = "false";
                            }
                        }
                        else if ((length > 0 && value1.Length > length) || value1.Length > Length)
                        {
                            value1 = StringHelper.CutString(value1, length);
                        }
                        //if (value1.Length < 100)
                        if (attr.jsonPre.Length > 0)//字符串才需要转义
                        {
                            value1 = filterJson(value1);
                        }
                        if (isLower)
                        {
                            output.Append("\"").Append(attr.FieldName.ToLower()).Append("\"").Append(":");
                        }
                        else if (isHeadLower)
                        {
                            output.Append("\"").Append(attr.FieldName[0].ToString().ToLower()).Append(attr.FieldName.Substring(1)).Append("\"").Append(":");
                        }
                        else
                        {
                            output.Append("\"").Append(attr.FieldName).Append("\"").Append(":");
                        }

                        //if (attr.FieldName.ToLower() == "hasAuthenticate".ToLower())
                        //{

                        //}
                        //public string enumTemplate = "{\"chinese\": \"zhname\",\"key\": \"value\"}";
                        //attr.GetJson(ref output, value1);
                        attr.GetJson(ref output, value1, isEnumChinese);//枚举量

                        output.Append(",");
                        count++;
                    }
                }
                //zlg重点
                Dictionary <List <ITableImplement>, string> Sub1 = mytable.Sub1();
                if (Sub1 != null)
                {
                    foreach (List <ITableImplement> list1 in Sub1.Keys)
                    {
                        string tbName = Sub1[list1];
                        if (string.IsNullOrEmpty(tbName) && list1 != null)
                        {
                            tbName = list1[0]._TableName;//TableName();
                        }
                        output.Append("\"").Append(tbName).Append("\"").Append(":");
                        output.Append(ToJson(list1));
                        output.Append(",");
                    }
                }
                Dictionary <ITableImplement, string> Sub2 = mytable.Sub2();
                if (Sub2 != null)
                {
                    foreach (ITableImplement list1 in Sub2.Keys)
                    {
                        string tbName = Sub2[list1];
                        if (string.IsNullOrEmpty(tbName) && list1 != null)
                        {
                            tbName = list1._TableName;//.TableName();
                        }
                        output.Append("\"").Append(tbName).Append("\"").Append(":");
                        output.Append(ToJson(list1));
                        output.Append(",");
                    }
                }
                Dictionary <string, string> Sub3 = mytable.Sub3();
                if (Sub3 != null)
                {
                    foreach (string list1 in Sub3.Keys)
                    {
                        string tbName = Sub3[list1];
                        if (string.IsNullOrEmpty(tbName) && list1 != null)
                        {
                            continue;// tbName = list1.TableName();
                        }
                        output.Append("\"").Append(tbName).Append("\"").Append(":");
                        output.Append(list1);
                        output.Append(",");
                    }
                }
                output.Append(mytable.af_JsonAppend());//.Append(",");
            }
            catch (Exception ex)
            {
                ConsoleService.Error("ToJson235:" + ex.StackTrace);
            }
            StringBuilder output1 = new StringBuilder(output.ToString().TrimEnd(','));

            return(output1.ToString());
        }
コード例 #7
0
        /// <summary>
        /// js转换为对象 0|ROLE_TYPE`1| 或者 1|ROLE_TYPE`1|
        /// 为url写的缩略型json串 js转换为对象 0|ROLE_TYPE`1| 或者 1|ROLE_TYPE`1|
        /// </summary>
        /// <param name="jsonStr"></param>
        /// <returns></returns>
        public MyTable FromJsonUrl <MyTable>(string jsonStr) where MyTable : ITable, new()
        {
            MyTable mytable = new MyTable();
            int     count   = 0;

            try
            {
                StringBuilder output = new StringBuilder(jsonStr);
                int           head1  = jsonStr.IndexOf("|");
                if (head1 > 0)
                {
                    if (mytable._TableName.ToLower() == ITableImplement.defaultTableName.ToLower())
                    {
                        mytable._TableName = Convert.ToString(jsonStr.Substring(0, head1).Trim());
                    }
                }
                else
                {
                    return(mytable);
                }
                int head2 = jsonStr.IndexOf("|", head1 + 1);
                if (head2 > 0)
                {
                    string countStr = jsonStr.Substring(head1 + 1, head2 - head1 - 1).Trim();
                    count = Convert.ToInt32(countStr);
                }
                else
                {
                    return(mytable);
                }
                if (count == 0)
                {
                    return(mytable);
                }
                output.Remove(0, head2 + 1);

                string   output1 = Convert.ToString(output);
                string[] psArray = output1.Split('|');
                foreach (string ps in psArray)
                {
                    if (ps.Length > 0)
                    {
                        string[] values = ps.Split('`');
                        if (values.Length == 2)
                        {
                            count--;
                            string fieldname = values[0];
                            string value     = values[1];
                            if (fieldname == "af_where")
                            {
                                mytable.af_WhereSQL = StringHelper.ReplaceNonCase(value, replaceFenGe, "|");
                            }
                            else if (fieldname == "af_top")
                            {
                                mytable.af_TopText = value;
                            }
                            else if (fieldname == "af_pageby")
                            {
                                mytable.af_PageByAttributeItem = new AttributeItem(value);
                            }
                            else if (fieldname == "af_pagebyorder")
                            {
                                mytable.af_PageByOrder = (Order)(Convert.ToInt32(value));
                            }
                            else if (fieldname == "af_orderby")
                            {
                                mytable.af_OrderByItem = OrderByItem.Deserialize(value);
                            }
                            else
                            {
                                mytable.SetValue(new AttributeItem(mytable._TableName, fieldname), StringHelper.ReplaceNonCase(value, replaceFenGe, "|"));
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ConsoleService.Error("FromJson188:" + ex.Message + "|" + jsonStr);
                throw new Exception("FromJson188:" + ex.Message + "|" + jsonStr);
            }
            if (count < 0)
            {
                ConsoleService.Warn("FromJson's crc is wrong, count = " + count);
            }
            return(mytable);
            //MyTable output = Newtonsoft.Json.JavaScriptConvert.DeserializeObject<MyTable>(jsonStr);
            //return output;
        }