Proxy Community
How do you properly python cast json as object? Best practices? or What's the correct way to python c - Printable Version

+- Proxy Community (https://proxycommunity.com/forum)
+-- Forum: Technical Community Support (https://proxycommunity.com/forum/forum-technical-community-support)
+--- Forum: API and Development (https://proxycommunity.com/forum/forum-api-and-development)
+--- Thread: How do you properly python cast json as object? Best practices? or What's the correct way to python c (/thread-how-do-you-properly-python-cast-json-as-object-best-practices-or-what-s-the-correct-way-to-python-c)

Pages: 1 2


How do you properly python cast json as object? Best practices? or What's the correct way to python c - maskedByteX - 24-10-2024

"Struggling to python cast json as object – any tips?"

Hey folks!

So I’ve been messing around with some APIs and keep running into this issue—trying to python cast json as object in Python. I know `json.loads()` gets me a dict, but sometimes I wanna work with it like an actual object (dot notation, ya know?).

I’ve seen stuff like `namedtuple` or `SimpleNamespace`, but not sure what’s the cleanest way.

Any of you got a favorite method? Or is there a slick lib for this?

(Also, pls no "just use dicts" replies—I’m stubborn and wanna do it this way lol.)

Thanks in advance! 🚀


“” - SecureSurfer - 31-10-2024

Hey! I feel ya—working with dicts can get messy.
For python cast json as object, I swear by `dataclasses`.
Check this out:

```python
from dataclasses import dataclass
import json

@dataclass
class MyData:
name: str
age: int

json_str = '{"name": "Alice", "age": 30}'
data = MyData(**json.loads(json_str))
```

Now you can do `data.name` like a boss.


“” - ProxyNomad99 - 04-12-2024

lol i was stuck on this too!
`SimpleNamespace` from `types` is my go-to for quick stuff:

```python
from types import SimpleNamespace
data = json.loads('{"key": "value"}', object_hook=lambda d: SimpleNamespace(**d))
```

Boom, now `data.key` works. Super lightweight.


“” - ghostByte99 - 16-01-2025

If you're into libraries, try `pydantic`.
It’s not just for validation—it’s perfect for python cast json as object with dot notation.

```python
from pydantic import BaseModel

class User(BaseModel):
id: int
name: str

user = User.parse_raw('{"id": 1, "name": "Bob"}')
print(user.name) # "Bob"
```

Plus, you get type hints. Win-win!


“” - MaskedXpert77 - 05-03-2025

Honestly? Just use `attrs` instead of `dataclasses` if you want more control.
It’s like dataclasses but with extra sauce.

```python
import attr
import json

@attr.s
class Item:
id = attr.ib()
name = attr.ib()

data = Item(**json.loads('{"id": 1, "name": "thingy"}'))
```

Now `data.name` works and you get repr/eq for free.


“” - VeilWalker99 - 21-03-2025

For a no-frills solution, try `namedtuple`:

```python
from collections import namedtuple
import json

User = namedtuple('User', ['id', 'name'])
data = User(**json.loads('{"id": 1, "name": "Jane"}'))
```

It’s immutable tho, so keep that in mind.


“” - secureStorm_77 - 26-03-2025

Dude, just found this lib called `marshmallow`.
It’s a bit overkill for simple stuff, but if you’re dealing with complex json, it’s gold.

```python
from marshmallow import Schema, fields

class UserSchema(Schema):
name = fields.Str()
age = fields.Int()

data = UserSchema().load(json.loads('{"name": "Tom", "age": 25}'))
```

Now `data["name"]` works, but you can tweak it to use dots.


“” - AnonWarrior22 - 28-03-2025

If you’re lazy like me, `dotmap` is a lifesaver:

```python
from dotmap import DotMap
data = DotMap(json.loads('{"key": "value"}'))
```

Now `data.key` works, and it’s super flexible. No class definitions needed!


“” - VeilMancerX - 02-04-2025

For a funky approach, try `jsonobject`:

```python
from jsonobject import JsonObject

class Person(JsonObject):
name = StringProperty()
age = IntegerProperty()

data = Person(json.loads('{"name": "Sam", "age": 40}'))
```

It’s a bit niche but great for schema-heavy stuff.


“” - maskedByteX - 05-04-2025

Thanks everyone!
Tried `SimpleNamespace` and `dataclasses`—both worked like a charm.
Still gotta test `pydantic` and `dotmap`, but this thread’s a goldmine.

Also, didn’t realize there were so many ways to python cast json as object.
Y’all rock! 🎉