Skip to content

A simple python library for comparing json objects for equivalency and helping developers to quickly spot differences between complex json structures.

License

Notifications You must be signed in to change notification settings

ChannelIQ/jsoncompare

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

##Install

pip install jsoncompare

##Explanation

  • Being able to tell whether or not an arbitrarily nested json blob is the same as another blob can hurt your eyes.
  • Additional complexity comes in when your json array's order doesn't matter.
  • For example, you might have a set in Java that you are going to send over the wire as json. It may be represented as a json array but in actuality, you don't care about the order.

Recent Changes

Version    Comments
0.1.1      Orginal Version
0.1.2      Adds support for "contains"

##Examples

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"
      }
  ]

About

A simple python library for comparing json objects for equivalency and helping developers to quickly spot differences between complex json structures.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages