Rust query string parser with nesting support
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
src refactor: update deps Mar 7, 2018
.gitignore Initial commit Sep 24, 2014
.travis.yml Modified source to compile with rust 1.0.0 alpha Jan 19, 2015 chore(CONTRIBUTING): add guide Feb 14, 2015
Cargo.toml chore(release): v2.0.0 Mar 7, 2018
LICENSE chore: license Dec 6, 2014
Makefile chore: modify CNAME Dec 6, 2014 Add notes about this being a fork Jun 14, 2017

What is Queryst?

This is a fork of the original, with serde and serde_json updated to 0.9

Build Status

A query string parsing library for Rust inspired by A part of REST-like API micro-framework Rustless.

# Cargo.toml

queryst = "1"

API docs


Use queryst library to parse query-string to corresponding json values.

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 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:

// { "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:

// { "a": ["b", "c"] }

You may specify an index as well:

// { "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:

// { "a": {"1": "b", "15": "c"} }

Also if you mix notations, queryst will merge the two items into an object:

// { "a": { "0": "b", "b": "c" } }

You can also create arrays of objects:

// { "a": [{ "b": "c" }] }