7 个版本

使用旧的 Rust 2015

0.0.7 2015年8月29日
0.0.6 2015年3月26日

#9 in #object-key

37 每月下载

MIT 许可证

64KB
1.5K SLoC

weakjson

Build Status

该库仍在开发中。请勿使用。

如何使用它

该库只提供了三个函数。

从字符串解码 JSON 值

pub fn from_str(s: &str) -> Result<Json, BuilderError>

将 JSON &str 解码为对象的快捷函数

pub fn decode<T: Decodable>(s: &str) -> Result<T, DecoderError>

&mut io::Read 解码 JSON 值

pub fn from_reader(rdr: &mut Read) -> Result<Json, BuilderError>

与标准 JSON 的区别是什么

允许单行(内联)和多行(块)注释

{
    // this is an inline comment

    "foo": "bar" // another inline comment

    /*
       This is a block comment
       that continues on another line
    */
}

对象键如果是有效的标识符或自然数,则可以不使用引号

{
    foo: 'bar',
    while: true,
    sparse: {0: "Yankee", 273: "Hotel", 38: "Foxtrot"}
}

对象和数组可以有 尾随逗号

{
    oh: [
        "we shouldn't forget",
        "arrays can have",
        "trailing commas",
    ],
    finally: "a trailing comma",
}

字符串可以是单引号,并且可以包含未转义的控制字符,如换行符或制表符。因此,我们可以将字符串拆分为多行

[
    "This is a
multi-line string",

    "Here is another \
multi-line string with ignored backslash",

    'And say "hello" to single-quoted string!'
]

Weakjson 忽略无效转义,如 \f,因此它将是简单的 f

数字可以包括 Infinity-InfinityNaN-NaN,可以以显式的加号开头,以零位数字开头,以或结尾的(前导或尾随)小数点开头或结尾,或为十六进制(基 16)

[
    Infinity,  // f64::INFINITY
    -Infinity, // f64::NEG_INFINITY
    NaN,       // f64::NAN
    -NaN,      // f64::NAN

    +42,       // 42
    042,       // 42
    .42,       // 0.42
    42.,       // 42.0
    0x2A       // 42
]

依赖关系

~225KB