3 个稳定版本
2.3.1 | 2023年1月11日 |
---|---|
2.3.0 | 2022年11月16日 |
2.2.0 | 2022年11月16日 |
#20 在 #encoded-string
133 每月下载量
21KB
500 行
什么是 better-qs?
better-qs 是一个受 https://github.com/hapijs/qs 启发的 Rust 查询字符串解析库。从 queryst 衍生而来。
# Cargo.toml
[dependencies]
better-qs = "2"
用法
使用 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.7–2MB
~41K SLoC