using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Reflection; using MyCode.Project.Infrastructure.Common; namespace MyCode.Project.Infrastructure.Extensions { public static class JsonExtensions { public static bool IsNullOrEmpty(this JToken token) { return (token == null) || (token.Type == JTokenType.Array && !token.HasValues) || (token.Type == JTokenType.Object && !token.HasValues) || (token.Type == JTokenType.String && token.ToString() == String.Empty) || (token.Type == JTokenType.Null); } #region GetSingle(取得单个的数据) public static T GetSingle(this JObject jObject,string propertyeName,string propertype2Name = "") { var token = jObject[propertyeName]; if((token.IsNullOrEmpty())) { return default(T); } if (!string.IsNullOrEmpty(propertype2Name)) { token = token[propertype2Name]; } if (token.IsNullOrEmpty()) { return default(T); } var obj = token.ToObject(); return obj; // return token.Value(); } #endregion #region GetList(取得列表数据,适用于字典的情况) public static List GetChildList(this JObject jObject, string propertyeeName,string propertype2Name) { var token = jObject[propertyeeName]; if ((token.IsNullOrEmpty())) { return null; } if (!string.IsNullOrWhiteSpace(propertype2Name)) { token = token[propertype2Name]; } var arrToken = token.ToArray(); List contentBody = new List(); foreach (var jto in arrToken) { contentBody.Add(jto.ToObject()); } return contentBody; } #endregion #region GetList(取得列表数据,适用于字典的情况) public static List GetList(this JObject jObject, string propertyeeName) { var token = jObject[propertyeeName]; if ((token.IsNullOrEmpty())) { return null; } var arrToken = token.ToArray(); List contentBody = new List(); foreach (var jto in arrToken) { contentBody.Add(jto.ToObject()); } return contentBody; } #endregion #region ToJson(转成json是否首字母小写) /// /// 转成json是否首字母小写 /// /// /// /// public static string ToJson(this object obj, bool firstLetterSmall) { if (obj == null) { return ""; } return JsonHelper.ToJson(obj, false, firstLetterSmall); } #endregion #region ToJson(将对象直接转换成JSON) /// /// 得到JSON字符串 /// /// /// public static string ToJson(this object obj) { if (obj == null) { return ""; } return JsonHelper.ToJson(obj); } #endregion #region public static List GetList(this JObject jObject,string propertyeeName, string fieldName) { var sourceTags = jObject[propertyeeName].ToList(); var listTags = new List(); foreach (var tag in sourceTags) { var name = tag[fieldName].Value(); listTags.Add(name); } return listTags; } #endregion } }