using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
namespace Serein.Library.Api
{
///
/// JSON数据交互的Token接口,允许使用不同的JSON库进行数据处理。
///
public interface IJsonToken
{
///
/// 获取 Token
///
///
///
IJsonToken this[object name] { get; }
/* ///
/// 获取 Token 数组的元素,允许通过索引访问数组中的元素。
///
///
///
IJsonToken this[int index] { get; }*/
///
/// 获取指定名称的属性,如果存在则返回true,并通过out参数返回对应的IJsonToken对象。
///
///
///
///
bool TryGetValue(string name, out IJsonToken token);
///
/// 获取指定名称的属性值,如果不存在则返回null。
///
///
///
#nullable enable
IJsonToken? GetValue(string name);
///
/// 获取当前Token的字符串值,如果是null则返回null。
///
///
string GetString();
///
/// 获取当前Token的整数值,如果是null则抛出异常。
///
///
int GetInt32();
///
/// 获取当前Token的布尔值,如果是null则抛出异常。
///
///
bool GetBoolean();
///
/// 判断当前Token是否为null。
///
bool IsNull { get; }
///
/// 枚举当前Token作为数组时的所有元素,返回一个IEnumerable<IJsonTokens>。
///
///
IEnumerable EnumerateArray();
///
/// 将当前Token转换为指定类型的对象。
///
///
///
T ToObject();
///
/// 将当前Token转换为指定类型的对象。
///
///
///
object ToObject(Type type);
///
/// 将当前Token转换为字符串表示形式。
///
///
string ToString();
}
///
/// 使用Json进行数据交互的门户,允许外部使用第三方JSON库进行数据处理。
///
public interface IJsonProvider
{
///
/// JSON文本转为指定类型
///
///
///
///
T Deserialize(string jsonText);
///
/// JSON文本转为指定类型
///
///
///
///
object Deserialize(string jsonText, Type type);
///
/// 从对象转换为JSON文本
///
///
///
string Serialize(object obj);
///
/// 解析为Token
///
///
///
IJsonToken Parse(string json);
///
/// 创建对象
///
///
///
IJsonToken CreateObject(IDictionary? values = null);
///
/// 创建数组
///
///
///
IJsonToken CreateArray(IEnumerable