23个版本 (7个稳定版)

3.0.0 2023年5月13日
2.1.0 2020年12月13日
2.0.2 2020年6月6日
2.0.1 2020年2月6日
0.1.0 2014年11月23日

#290 in 编码

Download history 855/week @ 2024-03-13 819/week @ 2024-03-20 457/week @ 2024-03-27 598/week @ 2024-04-03 662/week @ 2024-04-10 664/week @ 2024-04-17 560/week @ 2024-04-24 771/week @ 2024-05-01 676/week @ 2024-05-08 841/week @ 2024-05-15 660/week @ 2024-05-22 699/week @ 2024-05-29 1071/week @ 2024-06-05 807/week @ 2024-06-12 655/week @ 2024-06-19 563/week @ 2024-06-26

每月下载 3,275
6 个crate中 使用 (3直接)

MIT 协议

19KB
450

什么是Queryst?

这是原始项目的分支,Serde和serde_json更新到0.9版本

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

# Cargo.toml

[dependencies]
queryst = "1"

API文档

用法

使用 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.4–1.3MB
~25K SLoC