You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
use jsonc_parser::parse_to_value;let json_value = parse_to_value(r#"{ "test": 5 } // test"#,&Default::default())?;// check the json_value here
Or an AST:
use jsonc_parser::parse_to_ast;use jsonc_parser::CollectOptions;let parse_result = parse_to_ast(r#"{ "test": 5 } // test"#,&CollectOptions{comments:true,// include comments in resulttokens:true,// include tokens in result},&Default::default())?;// ...inspect parse_result for value, tokens, and comments here...
Manipulation (CST)
When enabling the cst cargo feature, parsing to a CST provides a first class manipulation API:
# in Cargo.tomljsonc-parser = { version = "...", features = ["serde"] }
Then you can use the parse_to_serde_value function to get a serde_json::Value:
use jsonc_parser::parse_to_serde_value;let json_value = parse_to_serde_value(r#"{ "test": 5 } // test"#,&Default::default())?;
Alternatively, use parse_to_ast then call .into() (ex. let value: serde_json::Value = ast.into();).
Parse Strictly as JSON
Provide ParseOptions and set all the options to false:
use jsonc_parser::parse_to_value;use jsonc_parser::ParseOptions;let json_value = parse_to_value(text,&ParseOptions{allow_comments:false,allow_loose_object_property_names:false,allow_trailing_commas:false,})?;
Error column number with unicode-width
To to get more accurate display column numbers in error messages, enable the error_unicode_width cargo feature, which will pull in and use the unicode-width dependency internally. Otherwise it will use the character count, which isn't as accurate of a number, but will probably be good enough in most cases.