1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2018 年 10 月 20 日

#13#json-ld

MIT 许可证

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