Skip to content

Spooky12/json_resolver

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

json resolver

Description

json_resolver is a Dart library that helps accessing property in deep json object easily using keypath.

Given the following deeply nested json:

{
    "movie": "isFun",
    "earth": 199999,
    "dc": [
      {"name": "Superman"},
      {"name": "Flash"},
      {"name": "Wonder Woman"}
    ],
    "marvel": [
      {
        "name": "Thor",
        "weapon": "Mjolnir",
        "appear": [
          {"year": 2011, "title": "Thor"},
          {"year": 2013, "title": "The Dark World"},
          {"year": 2017, "title": "Ragnarok"}
        ]
      }
    ]
  }

We can access using keypath. The library ensures safe type checking and casting. You can provide default value to ensure that return value is not null (if you provide default value you may use bang operator ! to to cast the return to a non null value).

final String? byPropertyNullable = resolve(json: json, path: "movie");
expect(byPropertyNullable, "isFun");

final String byProperty = resolve(json: json, path: "movie", defaultValue: "error")!;
expect(byProperty, "isFun");

final int byInt = resolve(json: json, path: "earth", defaultValue: 0)!;
expect(byInt, 199999);

final String byIndex = resolve(json: json, path: "dc.2.name", defaultValue: "error")!;
expect(byIndex, "Wonder Woman");

final String byIndexThenProperty = resolve(json: json, path: "marvel.0.appear.1.title", defaultValue: "error")!;
expect(byIndexThenProperty, "The Dark World");

final int? byIntNullable = resolve(json: json, path: "movie");
expect(byIntNullable, null);

final int byInt = resolve(json: json, path: "movie", defaultValue: 0)!;
expect(byInt, 0);

Installation

First of all add the following dependencies to your pubspec.yaml:

dependencies:
  json_resolver: ^2.0.0

License

json_resolver is available under the MIT license. See the LICENSE file for more info.

About

🐰Easy resolving deep json using keypath in Dart

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Dart 100.0%