Skip to content

This crate provides a Figment provider for JSON5 format. JSON5 is a superset of JSON that allows comments, trailing commas, and more.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

powerumc/figment-json5

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Figment JSON5 Provider ci.svg crates.io docs.rs

Figment provider for JSON5 format

examples/config.json5

{
  // Allow comments
  "name": "json5",
  "age": 0x28, // Allow hexadecimal numbers
  "description": "This is a \
test config", // Allow multiline strings
  "leadingDecimalPoint": .8675309,
  "andTrailing": 8675309.,
  "positiveSign": +1,
  "address": "Seoul", // Allow trailing commas
}
use figment::Figment;
use figment::providers::Format;
use serde::Deserialize;
use figment_json5::Json5;

#[derive(Debug, Deserialize)]
struct Config {
    name: String,
    description: String,

    #[serde(rename = "leadingDecimalPoint")]
    leading_decimal_point: f64,

    #[serde(rename = "andTrailing")]
    and_trailing: f64,

    #[serde(rename = "positiveSign")]
    positive_sign: i32,

    age: u32
}

fn main() {
    let config: Config = Figment::new()
        .merge(Json5::file("./examples/config.json5"))
        .extract()
        .unwrap();

    println!("{:#?}", config)

    // print result
    /*
Config {
    name: "json5",
    description: "This is a test config",
    leading_decimal_point: 0.8675309,
    and_trailing: 8675309.0,
    positive_sign: 1,
    age: 40,
}
    */
}

Overview

This crate provides a Figment provider for JSON5 format. JSON5 is a superset of JSON that allows comments, trailing commas, and more.

What is JSON5?

JSON5 is an extension to the popular JSON file format that aims to be easier to write and maintain by hand (e.g. for config files). It is not intended to be used for machine-to-machine communication. (Keep using JSON or other file formats for that. 🙂)

Usage

Add the following to your Cargo.toml:

[dependencies]
figment = "0.10"
figment-json5 = "0.1.1"

License

figment-json5 is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).

About

This crate provides a Figment provider for JSON5 format. JSON5 is a superset of JSON that allows comments, trailing commas, and more.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages