using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace YBDevice.NApi { /// /// long类型处理 /// //public class CustomContractResolver : CamelCasePropertyNamesContractResolver //默认为驼峰样式 public class CustomContractResolver : DefaultContractResolver //保持默认值 { protected override string ResolvePropertyName(string propertyName) { //所有字母小写 return propertyName.ToLower(); // return base.ResolvePropertyName(propertyName); } /// /// 对长整型做处理 /// /// /// protected override JsonConverter ResolveContractConverter(Type objectType) { if (objectType == typeof(long)) { return new JsonConverterLong(); } return base.ResolveContractConverter(objectType); } } /// /// 对于LONG类型的转换 /// public class JsonConverterLong : JsonConverter { /// /// 判断是否为Long类型 /// /// 类型 /// 为long类型则可以进行转换 public override bool CanConvert(Type objectType) { if (objectType == typeof(long)) return true; return false; } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { if (value == null) return; string lvalue = value.ToString(); writer.WriteValue(lvalue); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { //bool isNullable = IsNullableType(objectType); //Type t = isNullable ? Nullable.GetUnderlyingType(objectType) : objectType; //if (reader.TokenType == JsonToken.Null) //{ // return null; //} //if (reader.TokenType == JsonToken.Integer) //{ // return reader.Value.ToString(); //} //return null; if ((reader.ValueType == null || reader.ValueType == typeof(long?)) && reader.Value == null) { return null; } else { long.TryParse(reader.Value != null ? reader.Value.ToString() : "", out long value); return value; } } } }