Files
serein-flow/Library/Utils/JsonHelper.cs
fengjiayi 152077e9b5 1. 重新设计了Generate项目及相关特性的命名,避免与其他类型混淆。
2. 补充了部分注释。
3. 修改了删除容器节点时,容器内子节点未正确删除的问题。
2025-07-30 21:15:07 +08:00

110 lines
3.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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>
public static void UseJsonProvider(IJsonProvider jsonPortal)
{
JsonHelper.provider = jsonPortal;
}
/// <summary>
/// 反序列化Json文本为指定类型的对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonText"></param>
/// <returns></returns>
public static T Deserialize<T>(string jsonText)
{
return provider.Deserialize<T>(jsonText);
}
/// <summary>
/// 反序列化Json文本为指定类型的对象
/// </summary>
/// <param name="jsonText"></param>
/// <param name="type"></param>
/// <returns></returns>
public static object Deserialize(string jsonText, Type type)
{
return provider.Deserialize(jsonText, type);
}
/// <summary>
/// 解析Json文本为IJsonToken对象
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
public static IJsonToken Parse(string json)
{
return provider.Parse(json);
}
/// <summary>
/// 将对象序列化为Json文本
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static string Serialize(object obj)
{
return provider.Serialize(obj);
}
/// <summary>
/// 创建一个Json对象使用字典初始化
/// </summary>
/// <param name="init"></param>
/// <returns></returns>
public static IJsonToken Object(Action<Dictionary<string, object>> init)
{
var dict = new Dictionary<string, object>();
init(dict);
return provider.CreateObject(dict);
}
/// <summary>
/// 创建一个Json对象使用字典初始化
/// </summary>
/// <param name="values"></param>
/// <returns></returns>
public static IJsonToken Array(IEnumerable<object> values)
{
return provider.CreateArray(values);
}
/// <summary>
/// 将对象转换为JsonToken
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
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>);
}
}
}