Skip to main content

A library to manage JSONs with encoded JSON more effectively (e.g. AWS Event Bridge Events, AWS API Gateway Events)

Project description

nested-json

PyPI PyPI - Downloads GitHub release (latest by date)

A library to manage JSONs with encoded JSON more effectively (e.g. AWS Event Bridge Events, AWS API Gateway Events)

Install

pip install nested_json

Usage

import nested_json as njson

The main API of the library consist of:

  • Nested(obj) - to convert any list or dictionary to a nested one
  • parse(str) - to parse a JSON string to a nested JSON
  • process(obj) - to process/stringify any nested JSON
  • dumps(obj), dump(obj, fp) - same as from the json module, but supports nested JSON
  • loads(str), load(fp) - same as from the json module, but supports nested JSON

Marking dict / list as nested

The Nested function can be used to mark a dictionary or list as nested data, which will add a particular property to it, marking it nested. This property was later removed during processing.

data = {
  "id": "12345",
  "event": {
    "payload": {
      "rawpayload": njson.Nested({
        "key": "value",
        "other": 2,
        "foo": True
      }),
      "tags": njson.Nested([
        "hello",
        "world
      ])
    }
  }
}
# {
#   "id": "12345",
#   "event": {
#     "payload": {
#       "rawpayload": {
#         "__nested__": True,
#         "key": "value",
#         "other": 2,
#         "foo": True
#       },
#       "tags": [
#         "__nested__",
#         "hello",
#         "world
#       ]
#     }
#   }
# }

Processing nested JSON

Using the process function, the nested keys can be removed and nested data converted to JSON string.

processed_data = njson.process(data)
# {
#   "id": "12345",
#   "event": {
#     "payload": {
#       "rawpayload": "{\"key\": \"value\", \"other\": 2, \"foo\": true}",
#       "tags": "[\"hello\", \"world\"]"
#     }
#   }
# }

Converting to JSON string

The result of process can be already passed to json.dumps , but the njson.dumps can also be used with nested JSON data.

json_string = njson.dumps(data)

# '{"id": "12345", "event": {"payload": {"rawpayload": "{\\"key\\": \\"value\\", \\"other\\": 2, \\"foo\\": true}", "tags": "[\\"hello\\", \\"world\\"]"}}}'

Parsing JSON string

Nested JSON string can be parsed to nested JSON data with the loads function or the parse function

assert njson.loads(json_string) == data
assert njson.parse(processed_data) == data
assert njson.parse(json.loads(json_string)) == data

Compatibility

Note that both loads and dumps use the json.loads and json.dumps functions; thus they can be used with "normal" JSON as well.

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

nested_json-1.0.1.tar.gz (4.5 kB view hashes)

Uploaded Source

Built Distribution

nested_json-1.0.1-py3-none-any.whl (4.5 kB view hashes)

Uploaded Python 3

Supported by

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