7 releases

Uses old Rust 2015

0.0.7 Aug 29, 2015
0.0.6 Mar 26, 2015

#18 in #foo-bar

MIT license

64KB
1.5K SLoC

weakjson

Build Status

The library is still under development. Please don't use it.

How to use it

There are only three functions that are provided by this library.

Decodes a json value from a string:

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

Shortcut function to decode a JSON &str into an object:

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

Decodes a json value from an &mut io::Read:

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

What is the difference with the standard JSON

Both inline (single-line) and block (multi-line) comments are allowed:

{
    // this is an inline comment

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

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

Object keys can be unquoted if they're valid identifiers or it's can be natural numbers:

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

Objects and arrays can have trailing commas:

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

Strings can be single-quoted and contain unescaped control characters like linebreaks or tabulation. Therefore, we can split string across multiple lines:

[
    "This is a
multi-line string",

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

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

Weakjson ignore invalid escaping like \f so that it will be simple f.

Numbers can include Infinity, -Infinity, NaN, and -NaN, can begin with an explicit plus sign, begin with leading zero digits, begin or end with a (leading or trailing) decimal point or be hexadecimal (base 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
]

Dependencies

~225KB