5 unstable releases
0.3.1 | Jan 19, 2023 |
---|---|
0.3.0 | Jan 15, 2023 |
0.2.1 | Jan 7, 2023 |
0.2.0 | Jan 7, 2023 |
0.1.0 | Jan 6, 2023 |
#1246 in Parser implementations
182 downloads per month
Used in 2 crates
82KB
2K
SLoC
fjson
A Rust library for parsing and formatting JSON with C-style comments and trailing commas
Usage
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 JSONC
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 valid, pretty JSON
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 valid, compact JSON
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);
Dependencies
~69KB