A Rust library for parsing and formatting JSON with C-style comments and trailing commas
Given the following input:
// 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 to pretty JSONC, intended for human viewing:
let output = fjson::to_jsonc(input).unwrap();
println!("{}", output);
Prints:
// 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 to pretty JSON, intended for human viewing:
let output = fjson::to_json(input)?;
println!("{}", output);
Prints:
{
"project": "fjson",
"language": "Rust",
"license": ["MIT"],
"public": true
}
Format to compact JSON, intended for computer consumption:
let output = fjson::to_json_compact(input)?;
println!("{}", output);
Prints:
{"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, this can be accomplished with the following:
use serde::Deserialize;
#[derive(Debug, Deserialize)]
struct Project {
project: String,
language: String,
license: Vec<String>,
public: bool,
}
let output = fjson::to_json_compact(input)?;
let project: Project = serde_json::from_str(&output)?;
println!("{:#?}", project);