1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2018 年 10 月 20 日 |
---|
#13 在 #json-ld
23KB
361 行
JSON-NS
这是 JSON-NS 的参考实现,使用 Rust 实现。请参阅博客文章,了解其功能和存在的理由。
文档
包含测试套件,可以使用
cargo test
lib.rs
:
JSON-NS 的参考实现,这是 JSON-LD 的小而基本的子集。请参阅博客文章,了解其功能和存在的理由。
此实现使用 serde_json
仓库类型来表示 JSON 值。进行基本处理涉及创建一个 Processor
,其中包含一些可选的配置,并给它一个 Value
来处理
#[macro_use]
extern crate serde_json as json;
extern crate json_ns;
use json_ns::Processor;
fn main() {
// Some example input.
let input = json!({
"@context": {
"foo": "http://example.com/ns#"
},
"foo:hello": "world"
});
// Process the document, and use `bar` instead as the output prefix.
let output = Processor::new()
.add_rule("bar", "http://example.com/ns#")
.process_value(&input);
// Check that the output is what we expected.
assert_eq!(output, json!({
"bar:hello": "world"
}));
}
如果没有处理器配置,此代码甚至可以更短
let output = Processor::new().process_value(&input);
在这种情况下,输出文档包含一个名为 http://example.com/ns#hello
的属性。
通常,您期望的大部分属性都在单个命名空间中。在这种情况下,设置输出上的默认命名空间可能很有用,其中属性没有前缀
processor.add_rule("", "http://example.com/ns#");
然后输出包含一个名为 hello
的属性。这在将值传递给 serde_json::from_value
解析为派生自 Deserialize
的结构体时特别有用。
请注意,输出本身不应被视为 JSON-NS 文档。将输入通过处理器两次运行可能会产生意外结果。
这应该涵盖了基础知识。更多详细信息可以在结构体、字段和函数的文档中找到。
依赖项
~365–770KB
~17K SLoC