Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

nested-json

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nested-json

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

  • 1.0.1
  • PyPI
  • Socket score

Maintainers
1

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.

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc