85 lines
2.2 KiB
C#
85 lines
2.2 KiB
C#
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<T>(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);
|
||
}
|
||
|
||
return token.Value<T>();
|
||
}
|
||
#endregion
|
||
|
||
#region GetList(取得列表数据,适用于字典的情况)
|
||
public static List<T> GetList<T>(this JObject jObject, string propertyeeName)
|
||
{
|
||
var token = jObject[propertyeeName];
|
||
|
||
if ((token.IsNullOrEmpty()))
|
||
{
|
||
return null;
|
||
}
|
||
|
||
return token.Values<T>().ToList();
|
||
}
|
||
#endregion
|
||
|
||
#region
|
||
public static List<T> GetList<T>(this JObject jObject,string propertyeeName, string fieldName)
|
||
{
|
||
var sourceTags = jObject[propertyeeName].ToList();
|
||
|
||
var listTags = new List<T>();
|
||
|
||
foreach (var tag in sourceTags)
|
||
{
|
||
var name = tag[fieldName].Value<T>();
|
||
|
||
listTags.Add(name);
|
||
}
|
||
|
||
return listTags;
|
||
}
|
||
#endregion
|
||
|
||
|
||
}
|
||
}
|