Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

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

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages