Crates.io | json-commons |
lib.rs | json-commons |
version | 0.3.0 |
source | src |
created_at | 2022-09-07 16:07:52.333047 |
updated_at | 2022-09-19 13:42:50.106714 |
description | A set of JSON common tools in Rust |
homepage | |
repository | https://github.com/Lucas-Palomo/json-commons |
max_upload_size | |
id | 660470 |
size | 26,688 |
A set of JSON common tools in Rust.
Disclaimer
read_str
json::JsonValue
from strread_file
json::JsonValue
from filepath_exists
bool
if dotted path existsget_path
Option<json::JsonValue>
parse_to_vec
json::JsonValue
array as Vec<json::JsonValue>
serialize
serialize_to_bson_hex
json_from_bson_hex
json::JsonValue
from a Hex Stringparse_to_document
bson::Document
from a json::JsonValue
json_from_document
json::JsonValue
from a bson::Document
parse_to_bson
bson::Bson
from a json::JsonValue
json_from_bson
return a json::JsonValue
from a bson::Bson
use json_commons::JsonCommons;
fn main() {
let jsonc = JsonCommons::new();
}
Parsing features allows to read a JSON content but in case of failure a panic error occurs
let content = "{\"car\": {\"model\": \"Gurgel Itaipu E400\", \"color\": \"red\"}}";
let json = jsonc.read_str(content);
let path = "/user/docs/myfile.json";
let json = jsonc.read_file(path);
The following examples uses this json content
{
"car": {
"model": "Gurgel Itaipu E400",
"color": "red"
}
}
You can check if the path exists
let json = jsonc.read_str(content);
jsonc.path_exists("car", json); // The output is True
jsonc.path_exists("car.model", json); // The output is True
jsonc.path_exists("car.name", json); // The output is False
jsonc.path_exists("person", json); // The output is False
You can get any path as an optional
let json = jsonc.read_str(content);
jsonc.get_path("car", json); // The output is Ok, containing a JsonValue
jsonc.get_path("car.model", json); // The output is Ok, containing a JsonValue
jsonc.get_path("car.name", json); // The output is None
jsonc.get_path("person", json); // The output is None
You can get a child element by accessing via index, see this example
{
"car": {
"model": "Gurgel Itaipu E400",
"variants": [
{
"fuel": "gasoline",
"color": "yellow"
},
{
"fuel": "eletric",
"color": "red"
}
]
}
}
let json = jsonc.read_str(content);
jsonc.get_path("car.variants", json); // The output is Ok, containing a JsonValue
jsonc.get_path("car.variants.0", json); // The output is Ok, containing a JsonValue
jsonc.get_path("car.variants.1.fuel", json); // The output is Ok, containing a JsonValue
jsonc.get_path("car.variants.99.fuel", json); // The output is None
jsonc.get_path("car.variants.one", json); // The output is None
Consider the following content
{
"cars": [
{
"model": "Gurgel Itaipu E400",
"color": "red"
},
{
"model": "Gurgel X15",
"color": "brown"
}
]
}
You can parse a list to a vec
let json = jsonc.read_str(content);
let cars = jsonc.get_path("cars", json).unwrap();
jsonc.parse_to_vec(cars); // The output is a vec of JsonValue, with len 2
This feature is equivalent to Javascript JSON.stringify
Consider the following content
{
"car": {
"model": "Gurgel Itaipu E4000",
"color": "red"
}
}
Using serialize the output is
let serialized = jsonc.serialize(myjson);
assert_eq!("{\"car\":{\"model\":\"Gurgel Itaipu E400\",\"color\":\"red\"}}", serialized);
let bson_hex = jsonc.serialize_to_bson_hex(myjson);
assert_eq!("3c000000036361720032000000026d6f64656c001300000047757267656c2049746169707520453430300002636f6c6f720004000000726564000000", bson_hex)
You can check bson hex using this tool
json::JsonValue
from a Hex Stringbson::Document
from a json::JsonValue
json::JsonValue
from a bson::Document
bson::Bson
from a json::JsonValue
json::JsonValue
from a bson::Bson