#json-parser #json #格式 #解码 #jsonc #hjson

fjson

一个用于解析和格式化 JSON 的库,支持 C 风格注释和尾随逗号

5 个不稳定版本

0.3.1 2023 年 1 月 19 日
0.3.0 2023 年 1 月 15 日
0.2.1 2023 年 1 月 7 日
0.2.0 2023 年 1 月 7 日
0.1.0 2023 年 1 月 6 日

#2779解析器实现

Download history 91/week @ 2024-04-14 59/week @ 2024-04-21 128/week @ 2024-04-28 72/week @ 2024-05-05 57/week @ 2024-05-12 1/week @ 2024-05-19 9/week @ 2024-05-26 49/week @ 2024-06-02 23/week @ 2024-06-09 11/week @ 2024-06-16 31/week @ 2024-06-23 15/week @ 2024-06-30 50/week @ 2024-07-07 6/week @ 2024-07-14 22/week @ 2024-07-21 64/week @ 2024-07-28

142 每月下载量
用于 metafmt

MIT 许可证

82KB
2K SLoC

fjson

一个用于解析和格式化 JSON 的 Rust 库,支持 C 风格注释和尾随逗号

使用方法

给定以下输入

// 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,
}

格式化为 JSONC

格式化为可读的 JSONC,适用于人类查看

let output = fjson::to_jsonc(input).unwrap();
println!("{}", output);

打印

// 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
}

格式化为有效、可读的 JSON

格式化为可读的 JSON,适用于人类查看

let output = fjson::to_json(input)?;
println!("{}", output);

打印

{
  "project": "fjson",
  "language": "Rust",
  "license": ["MIT"],
  "public": true
}

格式化为有效、紧凑的 JSON

格式化为紧凑的 JSON,适用于计算机处理

let output = fjson::to_json_compact(input)?;
println!("{}", output);

打印

{"project":"fjson","language":"Rust","license":["MIT"],"public":true}

使用 Serde 反序列化

要解析带有 C 风格注释和尾随逗号的 JSON,但通过 serde 进行反序列化,可以使用以下方法

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);

依赖项

~66KB