0 purchases
blueprint
PART OF QUEEN ๐
Validate JSON Against Your Own Blueprint ๐๐งฌ #
Content #
Validate JSON Against Your Own Blueprint ๐๐งฌ
Content
Motivation
NOTE
Features
supported types
Notes
Examples
example 1
example 2
example 3
Motivation #
we use json almost every day in our job with null safety we can skip many errors but we cant test if the api still intact after each update,
and the update does't break any thing in the data type or schema
so we meade this package mostly you can use it for testing the apis you consume with dart or what you built with dart
we could use some help if you are interested in server side dart at palace project
hope your day is bug-less with this package ๐
NOTE #
this package depends on dart >= 2.13.0 if you want to use it with flutter
you have to update to flutter >= 2.5
Features #
validate json to match any schema you want ๐
support dart native types ๐
support for TypeOrNull
support for .of for deeper and deeper validation ๐ช
throw or return false as a result ๐ฃ
Strong Types , also the blueprint is just a map but values must be a subtype of BluePrintField which is all of supported types null or not
tells you which key is a failure and why ๐ช
tested ๐งช
supported types #
data type
non-nullable Field
nullable Field
String
StringF
StringOrNull
int
IntF
IntOrNull
double
DoubleF
DoubleOrNull
num
NumF
NumOrNull
bool
BoolF
BoolOrNull
Map
MapF
MapOrNull
List
ListF
ListOrNull
Notes #
1 - use matchMap Or matchF to get true or false as result
2 - set the throwable parameter to true to throw the error in case of miss match
3 - use .of() function on Map and List it is available on there four rules MapF,MapOrNull,ListF , ListOrNull to validate deer inside the object
4 - in case of null value the nullable Field Rule will not validate against the args an consider it a match
5 - in case of a value in the nullable Field Rule the .of() function will validate against the args and return the result based on that
Examples #
example 1 #
import 'package:blueprint/blueprint.dart';
void main(List<String> arguments) {
//* use try/catch blocs to catch the failure message
try {
// simple one felid
matchMap(
// the json
{'name': 'queen'},
// the blue print
{'name': String},
// * you can use supported Felids only , they are listen in the readme.md file
throwable:true,
);
print('[๐][blue_print] match result is โ
');
} catch (e) {
print(e);
print('[๐][blue_print] match result is โ');
}
}
copied to clipboard
example 2 #
void main(List<String> arguments) {
//* use try/catch blocs to catch the failure message
try {
// ? validate against lists
matchMap(
{
'ids': [10, 11, 17]
},
{
'ids': ListF,
// ? or you can determine the list items type
// 'ids' : ListF(IntF()),
},
throwable:true,
);
print('[๐][blue_print] match result is โ
');
} catch (e) {
print(e);
print('[๐][blue_print] match result is โ');
}
}
copied to clipboard
example 3 #
void main(List<String> arguments) {
//* use try/catch blocs to catch the failure message
try {
// * full example
matchMap(
{
'name': 'ahmed',
'age': 25,
'args': [
{'foo': 5},
],
'passport': {
'id': 1,
'type': 'royal',
'created_at': '10-11-17',
}
},
// the blue print
{
'name': StringF,
'age': IntF,
'args': ListF(MapF.of({'foo': IntF})),
'passport': MapF.of({
'id': IntF,
'type': StringF,
'created_at': StringF,
})
},
throwable:true,
);
print('[๐][blue_print] match result is โ
');
} catch (e) {
print(e);
print('[๐][blue_print] match result is โ');
}
}
copied to clipboard
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.