Expand description
§fjson
A library for parsing and formatting JSON with C-style comments and trailing commas.
§Format as JSONC
Format to pretty JSONC, intended for human viewing:
const INPUT: &str = r#"
// This is a JSON value with comments and trailing commas
{
/* The project name is fjson */
"project": "fjson",
"language": "Rust",
"license": [
"MIT",
],
// This project is public.
"public": true,
}"#;
fn main() -> Result<(), fjson::Error> {
let output = fjson::to_jsonc(INPUT)?;
println!("{}", output);
Ok(())
}
// Outputs:
//
// // This is a JSON value with comments and trailing commas
// {
// /* The project name is fjson */
// "project": "fjson",
// "language": "Rust",
// "license": ["MIT"],
//
// // This project is public.
// "public": true
// }
§Format as JSON
Format to pretty JSON, intended for human viewing:
const INPUT: &str = r#"
// This is a JSON value with comments and trailing commas
{
/* The project name is fjson */
"project": "fjson",
"language": "Rust",
"license": [
"MIT",
],
// This project is public.
"public": true,
}"#;
fn main() -> Result<(), fjson::Error> {
let output = fjson::to_json(INPUT)?;
println!("{}", output);
Ok(())
}
// Outputs:
//
// {
// "project": "fjson",
// "language": "Rust",
// "license": ["MIT"],
// "public": true
// }
§Format as valid, compact JSON
Format to compact JSON, intended for computer consumption:
const INPUT: &str = r#"
// This is a JSON value with comments and trailing commas
{
/* The project name is fjson */
"project": "fjson",
"language": "Rust",
"license": [
"MIT",
],
// This project is public.
"public": true,
}"#;
fn main() -> Result<(), fjson::Error> {
let output = fjson::to_json_compact(INPUT)?;
println!("{}", output);
Ok(())
}
// Outputs:
//
// {"project":"fjson","language":"Rust","license":["MIT"],"public":true}
§Deserialize with Serde
To parse JSON with C-style comments and trailing commas, but deserialize via serde, the following can be done:
use serde::Deserialize;
#[derive(Debug, Deserialize)]
struct Project {
project: String,
language: String,
license: Vec<String>,
public: bool,
}
const INPUT: &str = r#"
// This is a JSON value with comments and trailing commas
{
/* The project name is fjson */
"project": "fjson",
"language": "Rust",
"license": [
"MIT",
],
// This project is public.
"public": true,
}"#;
fn main() {
let output = fjson::to_json_compact(INPUT).unwrap();
let project: Project = serde_json::from_str(&output).unwrap();
println!("{:#?}", project);
}
Re-exports§
pub use error::Error;
Modules§
- Parse JSONC into an abstract syntax tree.
- Error handling for the fjson crate.
- Format
Root
values to JSONC or pretty/compact JSON. - Scanner that provides an iterator over JSONC tokens.
- Validate JSON(C) without creating an AST.
Functions§
- Parses JSONC and formats the output into “pretty” printed JSON.
- Parses JSONC and formats the output into valid, compact JSON.
- Parses JSONC and formats the output into “pretty” printed JSON to the provided writer.
- Parses JSONC and formats the output into valid, compact JSON to the provided writer.
- Parses and formats JSON with C-style comments and trailing commas.
- Parses and formats JSON with C-style comments and trailing commas to the provided writer.