diff --git a/开发版dev/Net6开发版/VOL.Core/Controllers/Basic/VolController.cs b/开发版dev/Net6开发版/VOL.Core/Controllers/Basic/VolController.cs index 3a85cf81..746601fe 100644 --- a/开发版dev/Net6开发版/VOL.Core/Controllers/Basic/VolController.cs +++ b/开发版dev/Net6开发版/VOL.Core/Controllers/Basic/VolController.cs @@ -1,364 +1,59 @@ -using Newtonsoft.Json; +using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; using System; -using System.Collections; -using System.Collections.Generic; -using System.Data; -using System.Reflection; -using System.Text; -using VOL.Core.Controllers.Basic; +using VOL.Core.Filters; -namespace VOL.Core.Extensions +namespace VOL.Core.Controllers.Basic { - public static class ConvertJsonExtension + [JWTAuthorize, ApiController] + public class VolController : Controller { - #region 私有方法 - /// - /// 过滤特殊字符 - /// - /// 字符串 - /// json字符串 - private static string String2Json(String s) + public VolController() { - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < s.Length; i++) - { - char c = s.ToCharArray()[i]; - switch (c) - { - case '\"': - sb.Append("\\\""); break; - case '\\': - sb.Append("\\\\"); break; - case '/': - sb.Append("\\/"); break; - case '\b': - sb.Append("\\b"); break; - case '\f': - sb.Append("\\f"); break; - case '\n': - sb.Append("\\n"); break; - case '\r': - sb.Append("\\r"); break; - case '\t': - sb.Append("\\t"); break; - default: - sb.Append(c); break; - } - } - return sb.ToString(); + } /// - /// 格式化字符型、日期型、布尔型 + /// 2020.11.21增加json原格式返回数据(默认是驼峰格式) /// - /// - /// + /// + /// /// - private static string StringFormat(string str, Type type) + protected JsonResult JsonNormal(object data, JsonSerializerSettings serializerSettings = null, bool formateDate = true) { - if (type == typeof(string)) + serializerSettings = serializerSettings ?? new JsonSerializerSettings(); + serializerSettings.ContractResolver = null; + if (formateDate) { - str = String2Json(str); - str = "\"" + str + "\""; + serializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; } - else if (type == typeof(DateTime)) + serializerSettings.Converters.Add(new LongCovert()); + return Json(data, serializerSettings); + } + } + public class LongCovert : JsonConverter + { + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if (reader.Value == null) { - str = "\"" + str + "\""; + return null; } - else if (type == typeof(bool)) - { - str = str.ToLower(); - } - else if (type != typeof(string) && string.IsNullOrEmpty(str)) - { - str = "\"" + str + "\""; - } - return str; + long.TryParse(reader.Value.ToString(), out long value); + return value; } - #endregion - - #region list转换成JSON - /// - /// list转换为Json - /// - /// - /// - /// - public static string ListToJson(this IList list) + public override bool CanConvert(Type objectType) { - object obj = list[0]; - return ListToJson(list, obj.GetType().Name); + return typeof(long) == objectType || typeof(long?) == objectType; } - /// - /// list转换为json - /// - /// - /// - /// - /// - private static string ListToJson(this IList list, string JsonName) + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { - if (list.Count == 0) + if (value == null) { - return ""; + writer.WriteNull(); + return; } - StringBuilder Json = new StringBuilder(); - if (string.IsNullOrEmpty(JsonName)) - JsonName = list[0].GetType().Name; - Json.Append("{\"" + JsonName + "\":["); - - for (int i = 0; i < list.Count; i++) - { - T obj = Activator.CreateInstance(); - PropertyInfo[] pi = obj.GetType().GetProperties(); - Json.Append("{"); - for (int j = 0; j < pi.Length; j++) - { - Type type = pi[j].GetValue(list[i], null).GetType(); - Json.Append("\"" + pi[j].Name.ToString() + "\":" + StringFormat(pi[j].GetValue(list[i], null).ToString(), type)); - if (j < pi.Length - 1) - { - Json.Append(","); - } - } - Json.Append("}"); - if (i < list.Count - 1) - { - Json.Append(","); - } - } - Json.Append("]}"); - return Json.ToString(); - } - #endregion - - #region 对象转换为Json - /// - /// 对象转换为json - /// - /// json对象 - /// json字符串 - public static string ToJson(this object jsonObject) - { - string jsonString = "{"; - PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties(); - for (int i = 0; i < propertyInfo.Length; i++) - { - object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null); - string value = string.Empty; - if (objectValue is DateTime || objectValue is Guid || objectValue is TimeSpan) - { - value = "'" + objectValue.ToString() + "'"; - } - else if (objectValue is string) - { - value = "'" + ToJson(objectValue.ToString()) + "'"; - } - else if (objectValue is IEnumerable) - { - value = ToJson((IEnumerable)objectValue); - } - else - { - value = ToJson(objectValue.ToString()); - } - jsonString += "\"" + ToJson(propertyInfo[i].Name) + "\":" + value + ","; - } - jsonString.Remove(jsonString.Length - 1, jsonString.Length); - return jsonString + "}"; - } - - #endregion - - #region 对象集合转换为json - /// - /// 对象集合转换为json - /// - /// 对象集合 - /// json字符串 - public static string ToJson(this IEnumerable array) - { - string jsonString = "{"; - foreach (object item in array) - { - jsonString += ToJson(item) + ","; - } - jsonString.Remove(jsonString.Length - 1, jsonString.Length); - return jsonString + "]"; - } - #endregion - - #region 普通集合转换Json - /// - /// 普通集合转换Json - /// - /// 集合对象 - /// Json字符串 - public static string ToArrayString(this IEnumerable array) - { - string jsonString = "["; - foreach (object item in array) - { - jsonString = ToJson(item.ToString()) + ","; - } - jsonString.Remove(jsonString.Length - 1, jsonString.Length); - return jsonString + "]"; - } - #endregion - - #region DataSet转换为Json - /// - /// DataSet转换为Json - /// - /// DataSet对象 - /// Json字符串 - public static string ToJson(this DataSet dataSet) - { - string jsonString = "{"; - foreach (DataTable table in dataSet.Tables) - { - jsonString += "\"" + table.TableName + "\":" + ToJson(table) + ","; - } - jsonString = jsonString.TrimEnd(','); - return jsonString + "}"; - } - #endregion - - #region Datatable转换为Json - /// - /// Datatable转换为Json - /// - /// Datatable对象 - /// Json字符串 - public static string ToJson(this DataTable dt) - { - StringBuilder jsonString = new StringBuilder(); - jsonString.Append("["); - DataRowCollection drc = dt.Rows; - for (int i = 0; i < drc.Count; i++) - { - jsonString.Append("{"); - for (int j = 0; j < dt.Columns.Count; j++) - { - string strKey = dt.Columns[j].ColumnName; - string strValue = drc[i][j].ToString(); - Type type = dt.Columns[j].DataType; - jsonString.Append("\"" + strKey + "\":"); - strValue = StringFormat(strValue, type); - if (j < dt.Columns.Count - 1) - { - jsonString.Append(strValue + ","); - } - else - { - jsonString.Append(strValue); - } - } - jsonString.Append("},"); - } - jsonString.Remove(jsonString.Length - 1, 1); - jsonString.Append("]"); - return jsonString.ToString(); - } - /// - /// DataTable转换为Json - /// - public static string ToJson(this DataTable dt, string jsonName) - { - StringBuilder Json = new StringBuilder(); - if (string.IsNullOrEmpty(jsonName)) - jsonName = dt.TableName; - Json.Append("{\"" + jsonName + "\":["); - if (dt.Rows.Count > 0) - { - for (int i = 0; i < dt.Rows.Count; i++) - { - Json.Append("{"); - for (int j = 0; j < dt.Columns.Count; j++) - { - Type type = dt.Rows[i][j].GetType(); - Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + StringFormat(dt.Rows[i][j].ToString(), type)); - if (j < dt.Columns.Count - 1) - { - Json.Append(","); - } - } - Json.Append("}"); - if (i < dt.Rows.Count - 1) - { - Json.Append(","); - } - } - } - Json.Append("]}"); - return Json.ToString(); - } - - #endregion - - #region DataReader转换为Json - /// - /// DataReader转换为Json - /// - /// DataReader对象 - /// Json字符串 - public static string ReaderJson(this IDataReader dataReader) - { - StringBuilder jsonString = new StringBuilder(); - Dictionary ModelField = new Dictionary(); - for (int i = 0; i < dataReader.FieldCount; i++) - { - ModelField.Add(dataReader.GetName(i), dataReader.GetFieldType(i)); - } - jsonString.Append("["); - while (dataReader.Read()) - { - jsonString.Append("{"); - foreach (KeyValuePair keyVal in ModelField) - { - Type type = keyVal.Value; - string strKey = keyVal.Key; - string strValue = dataReader[strKey].ToString(); - jsonString.Append("\"" + strKey + "\":"); - strValue = StringFormat(strValue, type); - jsonString.Append(strValue + ","); - } - jsonString.Remove(jsonString.Length - 1, 1); - jsonString.Append("},"); - } - dataReader.Close(); - jsonString.Remove(jsonString.Length - 1, 1); - jsonString.Append("]"); - return jsonString.ToString(); - } - #endregion - - - public static T DeserializeObject(this string entityString) - { - if (string.IsNullOrEmpty(entityString)) - { - return default(T); - } - if (entityString == "{}") - { - entityString = "[]"; - } - var settings = new JsonSerializerSettings(); - settings.Converters.Add(new LongCovert()); - return JsonConvert.DeserializeObject(entityString, settings); - } - - public static string Serialize(this object obj, JsonSerializerSettings formatDate = null) - { - if (obj == null) return null; - formatDate = formatDate ?? new JsonSerializerSettings - { - DateFormatString = "yyyy-MM-dd HH:mm:ss" - }; - formatDate.Converters.Add(new LongCovert()); - return JsonConvert.SerializeObject(obj, formatDate); + serializer.Serialize(writer, value.ToString()); } } } -