Home > Backend Development > Python Tutorial > How to Convert JSON Data to Python Objects?

How to Convert JSON Data to Python Objects?

Linda Hamilton
Release: 2024-11-10 01:10:02
Original
222 people have browsed it

How to Convert JSON Data to Python Objects?

JSON data parsing in Python

Question:

How to convert JSON data to Python objects?

Background:

You receive a JSON data object from the Facebook API and want to store it in a database. The Django view you are currently using is represented by the following code:

response = request.POST
user = FbApiUser(user_id = response['id'])
user.name = response['name']
user.username = response['username']
user.save()
Copy after login

This works fine, but you want to know how to handle complex JSON data objects. You wish there was a way to convert that JSON object into a Python object for easier use.

Solution:

In Python 3 you can easily do this using SimpleNamespace and object_hook:

import json
from types import SimpleNamespace

data = '{"name": "John Smith", "hometown": {"name": "New York", "id": 123}}'

# 将JSON解析为带有对应于dict键的属性的对象。
x = json.loads(data, object_hook=lambda d: SimpleNamespace(**d))
print(x.name, x.hometown.name, x.hometown.id)
Copy after login

In Python 2 , you can use namedtuple and object_hook (but this method is very slow for large number of nested objects):

import json
from collections import namedtuple

data = '{"name": "John Smith", "hometown": {"name": "New York", "id": 123}}'

# 将JSON解析为带有对应于dict键的属性的对象。
x = json.loads(data, object_hook=lambda d: namedtuple('X', d.keys())(*d.values()))
print x.name, x.hometown.name, x.hometown.id
Copy after login

To easily reuse this function, you can use the following code:

def _json_object_hook(d): return namedtuple('X', d.keys())(*d.values())
def json2obj(data): return json.loads(data, object_hook=_json_object_hook)

x = json2obj(data)
Copy after login

If You want it to handle keys that are not valid property names, look at the rename parameter of namedtuple.

The above is the detailed content of How to Convert JSON Data to Python Objects?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template