1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace TFT_Common
- {
- public static class JsonHelper
- {
- private static readonly JsonSerializerSettings jsonSerializerSetting = new()
- {
- ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver()
- {
- NamingStrategy = new Newtonsoft.Json.Serialization.SnakeCaseNamingStrategy()
- },
- NullValueHandling = NullValueHandling.Ignore
- };
- private static readonly JsonSerializerSettings ByteArrayToJsonSetting = new()
- {
- Converters = new List<JsonConverter>() {
- new JsonByteArrayConverter()
- },
- NullValueHandling = NullValueHandling.Ignore
- };
- public static string ToJsonExt(object data)
- {
- return JsonConvert.SerializeObject(data, jsonSerializerSetting);
- }
- /// <summary>
- /// 对象序列化为json字符串
- /// </summary>
- /// <param name="data">对象</param>
- /// <returns></returns>
- public static string ToJson(object data)
- {
- return JsonConvert.SerializeObject(data);
- }
- public static string ToJsonExt_ByteArray(object data)
- {
- return JsonConvert.SerializeObject(data, ByteArrayToJsonSetting);
- }
- /// <summary>
- /// json字符串反序列化为对象
- /// </summary>
- /// <typeparam name="T">对象</typeparam>
- /// <param name="data">json数据</param>
- /// <returns></returns>
- public static T ToObject<T>(string data)
- {
- return JsonConvert.DeserializeObject<T>(data);
- }
- }
- public class JsonByteArrayConverter : JsonConverter
- {
- public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
- {
- string result = string.Empty;
- if (value is byte[] temp)
- {
- result = BitConverter.ToString(temp);
- }
- writer.WriteValue(result);
- }
- public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
- {
- string strVal = reader.Value.ToString();
- if (strVal.Contains("-"))
- {
- string[] arr = strVal.Split('-');
- return arr.Select(x => byte.Parse(x)).ToArray();
- }
- else
- {
- throw new NotImplementedException();
- }
- }
- public override bool CanConvert(Type objectType)
- {
- return objectType == typeof(byte[]);
- }
- }
- }
|