Skip to main content

Wrapper class so that you can access `dict` and `list` as easily as in Javascript

Project description

python_js_json

Wrapper class so that you can access dict and list as easily as in Javascript

Installation

python3 -m pip install real_json

usage

```python
import real_json
import json

data = {
    "a": 1,
    "b": 2,
    "c": {
        "d": 3,
        "e": 4,
    },
    "f": [5, 6, 7],
}
wrapped = real_json.ify(data)

# Test attribute access
assert wrapped.a == 1
assert wrapped.b == 2
assert wrapped.c.d == 3
assert wrapped.c.e == 4
assert wrapped.f[0] == 5
assert wrapped.f[1] == 6
assert wrapped.f[2] == 7
assert wrapped.f[3] == None
assert wrapped.g == None
assert wrapped.c.f == None

# Test item access
assert wrapped["a"] == 1
assert wrapped["b"] == 2
assert wrapped["c"]["d"] == 3
assert wrapped["c"]["e"] == 4
assert wrapped["f"][0] == 5
assert wrapped["f"][1] == 6
assert wrapped["f"][2] == 7
assert wrapped["g"] == None
assert wrapped["c"]["f"] == None

# Test set attribute
wrapped.a = 10
assert wrapped.a == 10
wrapped.g = 20
assert wrapped.g == 20

# Test set item
wrapped["b"] = 20
assert wrapped["b"] == 20
wrapped["h"] = 30
assert wrapped["h"] == 30

# Test str and repr
assert str(wrapped) == str(data)
assert repr(wrapped) == repr(data)

# Test len
print("wrapped:", wrapped)
assert len(wrapped) == 6
assert len(wrapped.c) == 2
assert len(wrapped.f) == 3

# Test bool
assert bool(wrapped) == True
assert bool(wrapped.g) == True
assert bool(wrapped.c) == True
assert bool(wrapped.f)

json.dump(wrapped.__dict__["_data"], "wrapped.json")

data = {
    "name": "John",
    "age": 30,
    "cars": [
        {"model": "Ford", "year": 2020},
        {"model": "BMW", "year": 2019}
    ]
}

wrapped_data = real_json.ify(data)

# Accessing values using dot notation
print(wrapped_data.name)  # Output: "John"
print(wrapped_data.age)  # Output: 30
# Output: [{"model": "Ford", "year": 2020}, {"model": "BMW", "year": 2019}]
print(wrapped_data.cars)

# Accessing values using square brackets notation
print(wrapped_data['name'])  # Output: "John"
print(wrapped_data['age'])  # Output: 30
# Output: [{"model": "Ford", "year": 2020}, {"model": "BMW", "year": 2019}]
print(wrapped_data['cars'])

# Accessing values that are not present in the data
print(wrapped_data.address)  # Output: None
print(wrapped_data['address'])  # Output: None

# Accessing elements of the list using index notation
print(wrapped_data.cars[0])  # Output: {"model": "Ford", "year": 2020}
print(wrapped_data['cars'][0])  # Output: {"model": "Ford", "year": 2020}

# Accessing elements of the list using index notation
print(wrapped_data.cars[0].model)  # Output: "Ford"
print(wrapped_data['cars'][0]['model'])  # Output: "Ford"

# Accessing elements of the list using index notation
print(wrapped_data.cars[2])  # Output: None
print(wrapped_data['cars'][2])  # Output: None

# Accessing elements of the list using index notation
print(wrapped_data.cars[0].color)  # Output: None
print(wrapped_data['cars'][0]['color'])  # Output: None

json.dump(wrapped_data.__dict__["_data"], "data.json")
```

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

real_json-1.0.5.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

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

real_json-1.0.5-py3-none-any.whl (4.5 kB view details)

Uploaded Python 3

File details

Details for the file real_json-1.0.5.tar.gz.

File metadata

  • Download URL: real_json-1.0.5.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for real_json-1.0.5.tar.gz
Algorithm Hash digest
SHA256 853143c89d7a0b4887888548df82d6a791452c4ee47c0876927b9238886cacd9
MD5 942cac362e0f5eda04d8db61ddfc8af2
BLAKE2b-256 c421535988ccf3f05657020ef928da2e0d3926e1d37b8af0aaf6f46dd1495fe5

See more details on using hashes here.

File details

Details for the file real_json-1.0.5-py3-none-any.whl.

File metadata

  • Download URL: real_json-1.0.5-py3-none-any.whl
  • Upload date:
  • Size: 4.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for real_json-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 23e7c0c5ae7c342559da1b21f4003a7cec36fca2ea53617c9b8326ed59d4ac47
MD5 8d058c38f26d373e3dfcc8b4788e36c8
BLAKE2b-256 82ab1794e072356d9f24ee84d4d512fd2c87dac5e4a73868ff3926b9c17a246b

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