#json #comments #c #result #n #c-style

json_comments

Library to strip comments from JSON before parsing

3 unstable releases

0.2.1 Apr 6, 2022
0.2.0 Jul 1, 2019
0.1.0 Jun 30, 2019

#648 in Encoding

Download history 3390/week @ 2023-06-07 3561/week @ 2023-06-14 4939/week @ 2023-06-21 4214/week @ 2023-06-28 4391/week @ 2023-07-05 4761/week @ 2023-07-12 5068/week @ 2023-07-19 4958/week @ 2023-07-26 4646/week @ 2023-08-02 5233/week @ 2023-08-09 6374/week @ 2023-08-16 6735/week @ 2023-08-23 6128/week @ 2023-08-30 7908/week @ 2023-09-06 6220/week @ 2023-09-13 6688/week @ 2023-09-20

28,392 downloads per month
Used in 52 crates (11 directly)

Apache-2.0

15KB
261 lines

json-comments-rs

Build Status

json_comments is a library to strip out comments from JSON-like text. By processing text through a StripComments adapter first, it is possible to use a standard JSON parser (such as serde_json with quasi-json input that contains comments.

In fact, this code makes few assumptions about the input and could probably be used to strip comments out of other types of code as well, provided that strings use double quotes and backslashes are used for escapes in strings.

The following types of comments are supported:

  • C style block comments (/* ... */)
  • C style line comments (// ...)
  • Shell style line comments ()

Example using serde_json

use serde_json::{Result, Value};
use json_comments::StripComments;

fn main() -> Result<()> {
// Some JSON input data as a &str. Maybe this comes form the user.
let data = r#"
    {
        "name": /* full */ "John Doe",
        "age": 43,
        "phones": [
            "+44 1234567", // work phone
            "+44 2345678"  // home phone
        ]
    }"#;

// Strip the comments from the input (use `as_bytes()` to get a `Read`).
let stripped = StripComments::new(data.as_bytes());
// Parse the string of data into serde_json::Value.
let v: Value = serde_json::from_reader(stripped)?;

println!("Please call {} at the number {}", v["name"], v["phones"][0]);

Ok(())
}

No runtime deps