1 个稳定版本
使用旧的 Rust 2015
2.0.0 | 2017年6月14日 |
---|
#30 在 #encoded-string
用于 backtalk
16KB
392 行代码(不包括注释)
什么是 Queryst?
这是对原始版本的分支,将 serde 和 serde_json 更新到 0.9
一个受 https://github.com/hapijs/qs 启发的 Rust 查询字符串解析库。是 REST 类 API 微框架 Rustless 的一部分。
# Cargo.toml
[dependencies]
queryst = "1"
用法
使用 queryst 库将查询字符串解析为相应的 JSON 值。
use query::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" }] }
依赖关系
~6.5MB
~152K SLoC