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.2.tar.gz (3.8 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.2-py3-none-any.whl (4.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for real_json-1.0.2.tar.gz
Algorithm Hash digest
SHA256 c007305e829aed0fa936e39cd17cda6a5093e13ef35d635838bcaafd8aeaf76e
MD5 5ddb4aa1d5fa202164f7fb78d7aa4230
BLAKE2b-256 ae125678ca3b7fead12333752429d08e478dbf5930caeb8cab442c689a3407ae

See more details on using hashes here.

File details

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

File metadata

  • Download URL: real_json-1.0.2-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.8.10

File hashes

Hashes for real_json-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5d682f510c33fbd06f38be977860ac4896aae6aabd7e78fcaf1db8d7dd6e6994
MD5 dd4fc880b1b0fe9a09546369f2833716
BLAKE2b-256 95cc7b0ef2e4ae4398b354ba93d00b35b393070d57c27ba6d397be3be48778b7

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