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