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)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c007305e829aed0fa936e39cd17cda6a5093e13ef35d635838bcaafd8aeaf76e
|
|
| MD5 |
5ddb4aa1d5fa202164f7fb78d7aa4230
|
|
| BLAKE2b-256 |
ae125678ca3b7fead12333752429d08e478dbf5930caeb8cab442c689a3407ae
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d682f510c33fbd06f38be977860ac4896aae6aabd7e78fcaf1db8d7dd6e6994
|
|
| MD5 |
dd4fc880b1b0fe9a09546369f2833716
|
|
| BLAKE2b-256 |
95cc7b0ef2e4ae4398b354ba93d00b35b393070d57c27ba6d397be3be48778b7
|