Skip to content

liss-h/json_nav

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A macro for conveniently navigating serde_json::Values without having to do all the error handling manually. This is especially useful for situations where you have do not have consistent or predictable json documents and you want to try multiple paths to find the one where the relevant information is located.

Example

use serde_json::{json, Value};
use json_nav::{json_nav, JsonNavError};

let value = json!({
    "code": 200u16,
    "success": true,
    "payload": {
        "features": [
            "serde",
            "json"
        ]
    }
});
let first_feature = json_nav! {
    value => "payload" => "features" => 0; as str
};
assert_eq!(Ok("serde"), first_feature);
let type_error = json_nav! {
    value => "payload" => "features" => 1; as object
};
assert_eq!(Err(JsonNavError::TypeMismatch { expected: "object" }), type_error);
let path_error = json_nav! {
    value => "payload" => "failure"
};
assert_eq!(Err(JsonNavError::Navigation { path: "value.payload.failure" }), path_error);

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages