Skip to content

drobin/json-pretty-compact

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

json-pretty-compact: A compact & pretty formatter for serde_json.

Introduction

The json_pretty_compact crate implements a pretty serde_json formatter which tries to be as compact as possible. This can increase the readability of formatted JSON.

A compact-pretty formatted JSON looks like this:

[
  {
    "name": { "first": "Kobe", "middle": "Nico", "last": "Grimes" },
    "phoneNumber": "1-547-479-5471 x062",
    "username": "Kobe-Grimes",
    "emails": [ "[email protected]", "[email protected]" ],
    "coordinates": { "latitude": "-66.3821", "longitude": "127.117" }
  },
  {
    "name": { "first": "Adrian", "middle": "Finley", "last": "Koch" },
    "phoneNumber": "1-420-853-5251 x68083",
    "username": "Adrian-Koch",
    "emails": [ "[email protected]", "[email protected]" ],
    "coordinates": { "latitude": "51.4003", "longitude": "3.351" }
  }
]

Compaction rules

The formatter tries to put arrays and objects into one line, as long as the line length is still within its limit. If a line will become too large, the formatter will change into a pretty format.

Usage

use json_pretty_compact::PrettyCompactFormatter;
use serde::Serialize;
use serde_json::{Serializer, Value};

// Create a JSON value.
// In this simple example it contains only the "true" value.
let value: Value = serde_json::from_str("true").unwrap();

// The buffer where the serialized JSON is written.
let mut target = vec![];

// Create the formatter.
// It takes all the default values.
let formatter = PrettyCompactFormatter::new();

// Serialize the JSON value into the `target` buffer.
let mut ser = Serializer::with_formatter(&mut target, formatter);
value.serialize(&mut ser).unwrap();

assert_eq!(target, b"true");

License

You can check out the full license here.

This project is licensed under the terms of the MIT license.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages