23个版本 (7个稳定版)
3.0.0 | 2023年5月13日 |
---|---|
2.1.0 | 2020年12月13日 |
2.0.2 | 2020年6月6日 |
2.0.1 | 2020年2月6日 |
0.1.0 | 2014年11月23日 |
#290 in 编码
每月下载 3,275 次
在 6 个crate中 使用 (3直接)
19KB
450 行
什么是Queryst?
这是原始项目的分支,Serde和serde_json更新到0.9版本
这是受https://github.com/hapijs/qs启发的Rust查询字符串解析库。是REST-like API微框架Rustless的一部分。
# Cargo.toml
[dependencies]
queryst = "1"
用法
使用 queryst 库将查询字符串解析为对应的 json值。
use queryst::parse;
// will contain result as Json value
let object = parse("foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb");
描述
queryst 允许你在查询字符串中创建嵌套对象,通过将子键的名称用方括号 []
包围。例如,字符串 'foo[bar]=baz'
转换为以下JSON
{
"foo": {
"bar": "baz"
}
}
URI编码字符串也可以使用
parse('a%5Bb%5D=c');
// { "a": { "b": "c" } }
你也可以嵌套对象,如 'foo[bar][baz]=foobarbaz'
{
"foo": {
"bar": {
"baz": "foobarbaz"
}
}
}
解析数组
queryst 也可以使用类似的 []
语法解析数组
parse('a[]=b&a[]=c');
// { "a": ["b", "c"] }
你也可以指定一个索引
parse('a[0]=c&a[1]=b');
// { "a": ["c", "b"] }
注意,数组中的索引与对象中的键之间的唯一区别是,方括号之间的值必须是数字以创建数组。
queryst 不允许在数组中指定稀疏索引,并将目标数组转换为对象
parse('a[1]=b&a[15]=c');
// { "a": {"1": "b", "15": "c"} }
如果混合使用两种语法,queryst 将将两个项目合并为对象
parse('a[0]=b&a[b]=c');
// { "a": { "0": "b", "b": "c" } }
你也可以创建对象的数组
parse('a[][b]=c');
// { "a": [{ "b": "c" }] }
依赖
~0.4–1.3MB
~25K SLoC