pip install jsoncompare
Version Comments
0.1.1 Orginal Version
0.1.2 Adds support for "contains"
from jsoncompare import jsoncompare
# Compare respecting each array's order
jsoncompare.are_same(a, b)
# Compare ignoring each array's order
jsoncompare.are_same(a, b, True)
# Compare ignoring the value of certain keys
jsoncompare.are_same(a, b, False, ["datetime", "snacktime"])
# Contains at least
jsoncompare.contains(a, b)
# Getting difference traces
from jsoncompare import jsoncompare
a = {
"failureReason" : "Invalid request entity",
"fieldValidationErrors" : [
{
"field" : "normal value 1",
"reason" : "may not be smelly"
},
{
"field" : "Catalog.name",
"reason" : "may not be null"
}
]
}
b = {
"failureReason" : "Invalid request entity",
"fieldValidationErrors" : [
{
"field" : "crazy value 2",
"reason" : "may not be null"
},
{
"field" : "Catalog.catalogOwner",
"reason" : "may not be null"
}
]
}
print jsoncompare.are_same(a, b)[1]
results in:
Reason: Different values
Expected:
"normal value 1"
Actual:
"crazy value 2"
Reason: Different values (Check order)
Expected:
{
"field": "normal value 1",
"reason": "may not be smelly"
}
Actual:
{
"field": "crazy value 2",
"reason": "may not be null"
}
Reason: Different values
Expected:
[
{
"field": "normal value 1",
"reason": "may not be smelly"
},
{
"field": "Catalog.name",
"reason": "may not be null"
}
]
Actual:
[
{
"field": "crazy value 2",
"reason": "may not be null"
},
{
"field": "Catalog.catalogOwner",
"reason": "may not be null"
}
]