2025-07-27 23:34:01 +08:00
|
|
|
|
using Serein.Library.Api;
|
|
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Serein.Library.Utils
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Json门户类,需要你提供实现
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public static class JsonHelper
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Json门户类,需要你提供实现
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private static IJsonProvider provider;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 使用第三方包进行解析
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="jsonPortal"></param>
|
2025-07-27 23:46:26 +08:00
|
|
|
|
public static void UseJsonProvider(IJsonProvider jsonPortal)
|
2025-07-27 23:34:01 +08:00
|
|
|
|
{
|
|
|
|
|
|
JsonHelper.provider = jsonPortal;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-30 21:15:07 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 反序列化Json文本为指定类型的对象
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <typeparam name="T"></typeparam>
|
|
|
|
|
|
/// <param name="jsonText"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2025-07-27 23:34:01 +08:00
|
|
|
|
|
|
|
|
|
|
public static T Deserialize<T>(string jsonText)
|
|
|
|
|
|
{
|
|
|
|
|
|
return provider.Deserialize<T>(jsonText);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-30 21:15:07 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 反序列化Json文本为指定类型的对象
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="jsonText"></param>
|
|
|
|
|
|
/// <param name="type"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2025-07-27 23:34:01 +08:00
|
|
|
|
public static object Deserialize(string jsonText, Type type)
|
|
|
|
|
|
{
|
|
|
|
|
|
return provider.Deserialize(jsonText, type);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-30 21:15:07 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 解析Json文本为IJsonToken对象
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="json"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
|
2025-07-27 23:34:01 +08:00
|
|
|
|
public static IJsonToken Parse(string json)
|
|
|
|
|
|
{
|
|
|
|
|
|
return provider.Parse(json);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-08-02 12:09:36 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 尝试解析Json文本为IJsonToken对象
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="json"></param>
|
|
|
|
|
|
/// <param name="jsonToken"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public static bool TryParse(string json, out IJsonToken jsonToken)
|
|
|
|
|
|
{
|
|
|
|
|
|
return provider.TryParse(json, out jsonToken);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-30 21:15:07 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 将对象序列化为Json文本
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="obj"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2025-07-27 23:34:01 +08:00
|
|
|
|
public static string Serialize(object obj)
|
|
|
|
|
|
{
|
|
|
|
|
|
return provider.Serialize(obj);
|
|
|
|
|
|
}
|
2025-07-30 21:15:07 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 创建一个Json对象,使用字典初始化
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="init"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2025-07-27 23:34:01 +08:00
|
|
|
|
public static IJsonToken Object(Action<Dictionary<string, object>> init)
|
|
|
|
|
|
{
|
|
|
|
|
|
var dict = new Dictionary<string, object>();
|
|
|
|
|
|
init(dict);
|
|
|
|
|
|
return provider.CreateObject(dict);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-30 21:15:07 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 创建一个Json对象,使用字典初始化
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="values"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2025-07-27 23:34:01 +08:00
|
|
|
|
public static IJsonToken Array(IEnumerable<object> values)
|
|
|
|
|
|
{
|
|
|
|
|
|
return provider.CreateArray(values);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-30 21:15:07 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 将对象转换为JsonToken
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="obj"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2025-07-27 23:34:01 +08:00
|
|
|
|
public static IJsonToken FromObject(object obj)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (obj is System.Collections.IEnumerable && !(obj is string))
|
|
|
|
|
|
return provider.CreateObject(obj as IDictionary<string, object>);
|
|
|
|
|
|
return provider.CreateArray(obj as IEnumerable<object>);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|