139 lines
4.3 KiB
C#
139 lines
4.3 KiB
C#
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
|
|
namespace StoreHub.KJDWebService.Commons
|
|
{
|
|
public class JsonUtils
|
|
{
|
|
/// <summary>
|
|
/// 反序列化Json字符串生成对象实体
|
|
/// </summary>
|
|
/// <typeparam name="T">对象类型</typeparam>
|
|
/// <param name="jsonStr">json字符串</param>
|
|
/// <returns>对象实体</returns>
|
|
public static T DeserializeJsonToObject<T>(string jsonStr) where T : class
|
|
{
|
|
try
|
|
{
|
|
JsonSerializer serializer = new JsonSerializer();
|
|
StringReader sr = new StringReader(jsonStr);
|
|
object obj = serializer.Deserialize(new JsonTextReader(sr), typeof(T));
|
|
T t = obj as T;
|
|
return t;
|
|
}
|
|
catch
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public static string SerializeObject(object obj)
|
|
{
|
|
return SerializeObjectToString(obj);
|
|
}
|
|
|
|
public static string SerializeObjectToString(object obj, JsonSerializerSettings jsonsetting = null)
|
|
{
|
|
try
|
|
{
|
|
string str = "";
|
|
if (jsonsetting != null)
|
|
str = JsonConvert.SerializeObject(obj, Formatting.None, jsonsetting);
|
|
else
|
|
str = JsonConvert.SerializeObject(obj, Formatting.None);
|
|
return str;
|
|
}
|
|
catch
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public static T DeserializeJsonToObjectNullable<T>(string json) where T : class
|
|
{
|
|
try
|
|
{
|
|
JsonSerializer serializer = new JsonSerializer();
|
|
StringReader sr = new StringReader(json);
|
|
object o = serializer.Deserialize(new JsonTextReader(sr), typeof(T));
|
|
T t = o as T;
|
|
return t;
|
|
}
|
|
catch
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public static JObject JObjectParse(string json, JsonLoadSettings settings = null)
|
|
{
|
|
try
|
|
{
|
|
if (settings == null)
|
|
{
|
|
JObject obj = JObject.Parse(json);
|
|
return obj;
|
|
}
|
|
else
|
|
{
|
|
JObject obj = JObject.Parse(json, settings);
|
|
return obj;
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 解析JSON数组生成对象实体集合
|
|
/// </summary>
|
|
/// <typeparam name="T">对象类型</typeparam>
|
|
/// <param name="json">json数组字符串(eg.[{"ID":"112","Name":"石子儿"}])</param>
|
|
/// <returns>对象实体集合</returns>
|
|
public static List<T> DeserializeJsonToList<T>(string json) where T : class
|
|
{
|
|
JsonSerializer serializer = new JsonSerializer();
|
|
StringReader sr = new StringReader(json);
|
|
object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List<T>));
|
|
List<T> list = o as List<T>;
|
|
return list;
|
|
}
|
|
|
|
public static List<T> DeserializeJsonToListNullable<T>(string json) where T : class
|
|
{
|
|
try
|
|
{
|
|
JsonSerializer serializer = new JsonSerializer();
|
|
StringReader sr = new StringReader(json);
|
|
object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List<T>));
|
|
List<T> list = o as List<T>;
|
|
return list;
|
|
}
|
|
catch
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 反序列化JSON到给定的匿名对象.
|
|
/// </summary>
|
|
/// <typeparam name="T">匿名对象类型</typeparam>
|
|
/// <param name="json">json字符串</param>
|
|
/// <param name="anonymousTypeObject">匿名对象</param>
|
|
/// <returns>匿名对象</returns>
|
|
public static T DeserializeAnonymousType<T>(string json, T anonymousTypeObject)
|
|
{
|
|
T t = JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject);
|
|
return t;
|
|
}
|
|
}
|
|
}
|
|
|