3 stable releases
2.3.1 | Jan 11, 2023 |
---|---|
2.3.0 | Nov 16, 2022 |
2.2.0 | Nov 16, 2022 |
#20 in #encoded-string
133 downloads per month
21KB
500 lines
What is better-qs?
A query string parsing library for Rust inspired by https://github.com/hapijs/qs. Forked from queryst.
# Cargo.toml
[dependencies]
better-qs = "2"
Usage
Use queryst library to parse query-string to corresponding json values.
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");
Description
queryst allows you to create nested objects within your query strings,
by surrounding the name of sub-keys with square brackets []
.
or example, the string 'foo[bar]=baz'
converts to this JSON:
{
"foo": {
"bar": "baz"
}
}
URI encoded strings work too:
parse('a%5Bb%5D=c');
// { "a": { "b": "c" } }
You can also nest your objects, like 'foo[bar][baz]=foobarbaz'
:
{
"foo": {
"bar": {
"baz": "foobarbaz"
}
}
}
Parsing Arrays
queryst can also parse arrays using a similar []
notation:
parse('a[]=b&a[]=c');
// { "a": ["b", "c"] }
You may specify an index as well:
parse('a[0]=c&a[1]=b');
// { "a": ["c", "b"] }
Note that the only difference between an index in an array and a key in an object is that the value between the brackets must be a number to create an array.
queryst does't allow to specify sparse indexes on arrays and will convert target array to object:
parse('a[1]=b&a[15]=c');
// { "a": {"1": "b", "15": "c"} }
Also if you mix notations, queryst will merge the two items into an object:
parse('a[0]=b&a[b]=c');
// { "a": { "0": "b", "b": "c" } }
You can also create arrays of objects:
parse('a[][b]=c');
// { "a": [{ "b": "c" }] }
Dependencies
~0.7–2MB
~41K SLoC