#json #parser #url #parse-url #web #encoded-string

queryst-prime

Rust 查询字符串解析库,支持嵌套,基于 Serde 进行更新

1 个稳定版本

使用旧的 Rust 2015

2.0.0 2017年6月14日

#30#encoded-string


用于 backtalk

MIT 许可协议

16KB
392 行代码(不包括注释)

什么是 Queryst?

这是对原始版本的分支,将 serde 和 serde_json 更新到 0.9

Build Status

一个受 https://github.com/hapijs/qs 启发的 Rust 查询字符串解析库。是 REST 类 API 微框架 Rustless 的一部分。

# Cargo.toml

[dependencies]
queryst = "1"

API 文档

用法

使用 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