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); }
/// <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); }
/// <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()); }
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()); }
/// <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('|')); }
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()); }
/// <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; }