Skip to content

Latest commit

 

History

History
76 lines (53 loc) · 3.04 KB

README.zh.md

File metadata and controls

76 lines (53 loc) · 3.04 KB

Shapeless

license nuget dotNET China

Shapeless 是一个高性能的 C# 开源库,提供类似 JavaScript JSON 的灵活操作体验,支持动态的增删查改和 Linq、Lambda 表达式查询,极大地简化了运行时对象的构建与操作,同时保持了简洁性和强大的性能表现。

特性

  • 灵活 JSON 操作:提供类似 JavaScript 的增删查改功能,兼容 LinqLambda 表达式。
  • Web 开发友好:无缝集成 ASP.NET Core WebAPIMVC,简化 HTTP 请求处理和 API 开发流程。
  • 动态数据处理:支持动态对象构建与类型转换,内置高效数据校验机制。
  • 序列化支持:提供快速的 JSON 序列化和反序列化功能,适用于数据交换和存储需求。
  • 响应式监听:支持监听 JSON 对象中值的变化和键的移除,自动触发事件通知。
  • 架构设计:架构设计灵活,易于使用与扩展。
  • 跨平台无依赖:支持跨平台运行,无需外部依赖。
  • 高质量代码保障:遵循高标准编码规范,拥有高达 98% 的单元测试与集成测试覆盖率。
  • .NET 8+ 兼容性:可在 .NET 8 及更高版本环境中部署使用。

安装

dotnet add package Shapeless

快速入门

我们在主页上有不少例子,这是让您入门的第一个:

dynamic clay = Clay.Parse("""{"id":1,"name":"shapeless"}""");

// 添加属性
clay.author = "百小僧";
clay["company"] = "百签科技";
clay.homepage = new[] { "https://furion.net/", "https://baiqian.com" };
clay.number = 10;

// 添加方法
clay.sayHello = (Func<string>)(() => $"Hello, {clay.name}!");
clay.Increment = new Action(() => clay.number++);

// 调用方法
Console.WriteLine(clay.number); // number: 10
clay.Increment();
Console.WriteLine(clay.number); // number: 11

// 打印 JSON
Console.WriteLine($"{clay.sayHello()}\r\n{clay:UZ}");

运行上述代码后,控制台输出如下内容:

10
11
Hello, shapeless!
{"id":1,"name":"shapeless","author":"百小僧","company":"百签科技","homepage":["https://furion.net/","https://baiqian.com"],"number":11}

更多文档

文档

您可以在主页找到 Shapeless 文档。

贡献

该存储库的主要目的是继续发展 Shapeless 核心,使其更快、更易于使用。Shapeless 的开发在 Gitee 上公开进行,我们感谢社区贡献错误修复和改进。

许可证

Shapeless 采用 MIT 开源许可证。