#query-string #serde #deserialize #serialization #teamspeak #query-parser

serde-teamspeak-querystring

基于serde的teamspeak查询字符串反序列化库

3个不稳定版本

0.3.1 2024年4月27日
0.2.1 2023年5月11日
0.2.0 2023年5月11日

#449 in 编码


ts3-clientquery-lib中使用

MIT/Apache

29KB
791

Serde-teamspeak-querystring


基于serde的rust的teamspeak查询字符串解析器。

用法

// In your main function
let x: MyStruct = serde_teamspeak_querystring::from_str("YOUR QUERY STRING");

要查看支持和不支持的内容,请阅读文档

还有serde-querystring-actix crate,它支持在actix-web中使用此crate。它提供了一个QueryString提取器,其工作方式与actix-web的own::Query相同,但使用serde-querystring进行反序列化。

为什么

现有的替代方案没有涵盖一些情况,例如枚举(枚举在序列中的使用,对于rest apis中的过滤器很有用)在类似crate中不是一个一等值。这个crate试图涵盖更多的实际用例,并且它使用不同的策略来解析查询字符串,这使得它可以有一定的自由度来决定如何解析,这取决于结果的数据结构。请注意,在某些情况下,它可能与某些现有标准不完全兼容,但它试图支持它们定义的情况。

警告

此项目仍处于早期开发阶段,事物可能会在未经通知的情况下发生变化,因此请自行承担风险使用。

替代方案

如果您正在寻找更成熟的替代方案,请考虑查看以下crate

serde_urlencoded:一个性能良好的查询解析器,不支持子键(即字典)

serde_qs:这是一个更好的替代方案,它更成熟,对于大多数情况来说功能足够丰富

已知问题

  • 尚未正确报告错误
  • 不支持单元类型
  • 在访问子键时不会检查是否访问了所有输入
  • 不支持将序列键值反序列化为映射(更多是功能)

在某些情况下,测试只覆盖有效的查询字符串,因此可能存在一些错误。如果您遇到错误,请打开一个问题并让我知道。

致谢

它使用了大量从serde_json crate移植或复制过来的代码,以及一些来自form_urlencoded crate的代码,例如用于解析数字或字符串。

许可

本项目许可采用以下任一许可

任由您选择。

依赖项

约230–520KB
约10K SLoC