Skip to main content

Diff JSON and JSON-like structures in Python

Project description

ujsondiff

========

Diff JSON and JSON-like structures in Python.

Installation


pip install ujsondiff

Quickstart


>>> import ujsondiff as jd
>>> from ujsondiff import diff

>>> diff({'a': 1, 'b': 2}, {'b': 3, 'c': 4})
{'c': 4, 'b': 3, delete: ['a']}

>>> diff(['a', 'b', 'c'], ['a', 'b', 'c', 'd'])
{insert: [(3, 'd')]}

>>> diff(['a', 'b', 'c'], ['a', 'c'])
{delete: [1]}

# Typical diff looks like what you'd expect...
>>> diff({'a': [0, {'b': 4}, 1]}, {'a': [0, {'b': 5}, 1]})
{'a': {1: {'b': 5}}}

# ...but similarity is taken into account
>>> diff({'a': [0, {'b': 4}, 1]}, {'a': [0, {'c': 5}, 1]})
{'a': {insert: [(1, {'c': 5})], delete: [1]}}

# Support for various diff syntaxes
>>> diff({'a': 1, 'b': 2}, {'b': 3, 'c': 4}, syntax='explicit')
{insert: {'c': 4}, update: {'b': 3}, delete: ['a']}

>>> diff({'a': 1, 'b': 2}, {'b': 3, 'c': 4}, syntax='symmetric')
{insert: {'c': 4}, 'b': [2, 3], delete: {'a': 1}}

# Special handling of sets
>>> diff({'a', 'b', 'c'}, {'a', 'c', 'd'})
{discard: set(['b']), add: set(['d'])}

# Load and dump JSON
>>> print diff('["a", "b", "c"]', '["a", "c", "d"]', load=True, dump=True)
{"$delete": [1], "$insert": [[2, "d"]]}

# NOTE: Default keys in the result are objects, not strings!
>>> d = diff({'a': 1, 'delete': 2}, {'b': 3, 'delete': 4})
>>> d
{'delete': 4, 'b': 3, delete: ['a']}
>>> d[jd.delete]
['a']
>>> d['delete']
4
# Alternatively, you can use marshal=True to get back strings with a leading $
>>> diff({'a': 1, 'delete': 2}, {'b': 3, 'delete': 4}, marshal=True)
{'delete': 4, 'b': 3, '$delete': ['a']}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ujsondiff-3.0.0.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ujsondiff-3.0.0-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file ujsondiff-3.0.0.tar.gz.

File metadata

  • Download URL: ujsondiff-3.0.0.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.8.15 Darwin/21.6.0

File hashes

Hashes for ujsondiff-3.0.0.tar.gz
Algorithm Hash digest
SHA256 1a2cf2e471c647266c155038596831849a909689cf8fa85c7c5b8318949e8726
MD5 2ad5af475584cab10adaee08ad53b53a
BLAKE2b-256 16256dd00e8b6ca3d235ac2e0e2e8a21a80c33696caf0475712b5f4fc7798f01

See more details on using hashes here.

File details

Details for the file ujsondiff-3.0.0-py3-none-any.whl.

File metadata

  • Download URL: ujsondiff-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 5.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.8.15 Darwin/21.6.0

File hashes

Hashes for ujsondiff-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 22ee19346dd82633dad99b8738aacb87a58bad4497bc553ba2bfff0ce5f72e72
MD5 62f9b73d384645a93b628f0eb39a4272
BLAKE2b-256 1fcc6b9dcb8664e6a83fdf446696b5a005c0c586e7031ec7357927e460ad8fa1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page