当前位置: 首页 > news >正文

国外有什么优秀的网站推荐wordpress保存图片插件

国外有什么优秀的网站推荐,wordpress保存图片插件,wordpress多用户注册,d0906网站建设与管理在 Python 中,将 JSON 字符串转换为对象有多种方式,下面详细介绍最常用的几种方法:1. 使用 json.loads() 转换为字典这是最基本的方法,将 JSON 字符串转换为 Python 字典。pythonimport json# JSON 字符串 json_str {"name&…

在 Python 中,将 JSON 字符串转换为对象有多种方式,下面详细介绍最常用的几种方法:

1. 使用 json.loads() 转换为字典

这是最基本的方法,将 JSON 字符串转换为 Python 字典。

python

import json# JSON 字符串
json_str = '{"name": "张三", "age": 25, "is_student": false, "hobbies": ["篮球", "阅读"]}'# 转换为字典
data_dict = json.loads(json_str)
print(type(data_dict))  # <class 'dict'>
print(data_dict)
# {'name': '张三', 'age': 25, 'is_student': False, 'hobbies': ['篮球', '阅读']}# 访问数据
print(data_dict['name'])      # 张三
print(data_dict['hobbies'][0]) # 篮球

2. 转换为自定义对象

方法一:手动创建对象

python

import jsonclass Person:def __init__(self, name, age, is_student, hobbies):self.name = nameself.age = ageself.is_student = is_studentself.hobbies = hobbiesdef __str__(self):return f"Person(name={self.name}, age={self.age}, is_student={self.is_student})"# JSON 字符串
json_str = '{"name": "李四", "age": 30, "is_student": true, "hobbies": ["音乐", "旅行"]}'# 先转换为字典
data_dict = json.loads(json_str)# 手动创建对象
person = Person(name=data_dict['name'],age=data_dict['age'],is_student=data_dict['is_student'],hobbies=data_dict['hobbies']
)print(person)  # Person(name=李四, age=30, is_student=True)
print(person.hobbies)  # ['音乐', '旅行']

方法二:使用 object_hook 参数(推荐)

python

import jsonclass Person:def __init__(self, name, age, is_student, hobbies):self.name = nameself.age = ageself.is_student = is_studentself.hobbies = hobbiesdef __str__(self):return f"Person(name={self.name}, age={self.age})"def dict_to_person(dct):"""将字典转换为 Person 对象的钩子函数"""return Person(name=dct.get('name'),age=dct.get('age'),is_student=dct.get('is_student', False),hobbies=dct.get('hobbies', []))# JSON 字符串
json_str = '{"name": "王五", "age": 22, "is_student": true, "hobbies": ["编程", "游戏"]}'# 直接转换为对象
person = json.loads(json_str, object_hook=dict_to_person)
print(type(person))  # <class '__main__.Person'>
print(person)        # Person(name=王五, age=22)
print(person.hobbies)  # ['编程', '游戏']

方法三:使用 dataclasses (Python 3.7+)

python

import json
from dataclasses import dataclass
from typing import List@dataclass
class Person:name: strage: intis_student: bool = Falsehobbies: List[str] = Nonedef __post_init__(self):if self.hobbies is None:self.hobbies = []# JSON 字符串
json_str = '{"name": "赵六", "age": 28, "is_student": false, "hobbies": ["烹饪", "电影"]}'# 转换为字典后创建对象
data_dict = json.loads(json_str)
person = Person(**data_dict)print(person)  # Person(name='赵六', age=28, is_student=False, hobbies=['烹饪', '电影'])

3. 处理嵌套 JSON 对象

python

import jsonclass Address:def __init__(self, city, street):self.city = cityself.street = streetdef __str__(self):return f"{self.city}市{self.street}"class User:def __init__(self, name, age, address):self.name = nameself.age = ageself.address = addressdef __str__(self):return f"User(name={self.name}, age={self.age}, address={self.address})"def complex_dict_to_obj(dct):"""处理嵌套对象的转换"""if 'city' in dct and 'street' in dct:return Address(dct['city'], dct['street'])elif 'name' in dct and 'age' in dct and 'address' in dct:return User(dct['name'], dct['age'], dct['address'])return dct# 嵌套 JSON 字符串
json_str = '''
{"name": "钱七","age": 35,"address": {"city": "北京","street": "朝阳区建国路"}
}
'''user = json.loads(json_str, object_hook=complex_dict_to_obj)
print(user)  # User(name=钱七, age=35, address=北京市朝阳区建国路)

4. 使用第三方库 marshmallow

对于复杂的 JSON 转换,推荐使用 marshmallow 库:

python

# 首先安装: pip install marshmallow
from marshmallow import Schema, fields, post_loadclass PersonSchema(Schema):name = fields.Str()age = fields.Int()is_student = fields.Bool()hobbies = fields.List(fields.Str())@post_loaddef make_person(self, data, **kwargs):return Person(**data)# JSON 字符串
json_str = '{"name": "孙八", "age": 26, "is_student": true, "hobbies": ["游泳", "摄影"]}'# 使用 schema 转换
schema = PersonSchema()
person = schema.loads(json_str)print(type(person))  # <class '__main__.Person'>
print(person)        # Person(name=孙八, age=26, is_student=True)

5. 处理 JSON 数组

python

import jsonclass Product:def __init__(self, name, price):self.name = nameself.price = pricedef __str__(self):return f"Product(name={self.name}, price=¥{self.price})"def dict_to_product(dct):if 'name' in dct and 'price' in dct:return Product(dct['name'], dct['price'])return dct# JSON 数组字符串
json_array_str = '''
[{"name": "笔记本电脑", "price": 5999},{"name": "智能手机", "price": 3999},{"name": "耳机", "price": 299}
]
'''products = json.loads(json_array_str, object_hook=dict_to_product)
for product in products:print(product)
# Product(name=笔记本电脑, price=¥5999)
# Product(name=智能手机, price=¥3999)
# Product(name=耳机, price=¥299)

总结

方法优点缺点适用场景
json.loads()简单直接返回字典,不是对象快速访问数据
object_hook灵活,支持自定义转换需要手动编写转换逻辑复杂对象转换
dataclasses代码简洁,类型安全需要 Python 3.7+数据类对象
marshmallow功能强大,验证数据需要安装第三方库生产环境,复杂需求

根据你的具体需求选择合适的方法。对于简单的数据访问,使用字典即可;对于需要面向对象编程的场景,推荐使用 object_hook 或 dataclasses

http://www.dtcms.com/a/527012.html

相关文章:

  • 网站开发证书是什么网站经营性备案需要什么资料
  • 企业网站的cms乔拓云网微信小程序制作收费吗
  • 网站怎么做微信接口全国十大物联网平台公司
  • 国外 电子 商务 网站 欣赏怎样解析网站域名
  • 湛江市律师网站建设品牌传奇做网站空间
  • 生成手机版网站金湖做网站
  • 宝塔面板怎么做网站东莞外贸优化公司
  • 十大不收费看盘软件网站苏州互联网公司集中在哪里
  • 西安做网站公司 玖佰网络网站能不能一边用 一边备案
  • 网站上面关于我们要怎么填写阿里云备案 网站名称
  • 单页网站设计欣赏打开网站
  • 电商网站建设与管理推广图片制作
  • 东莞市网站seo旅游小程序页面设计模板
  • 建设银行网络学习网站品牌网上授权
  • 和魔鬼做交易的网站网站建设平台代理
  • 苏宁易购网站风格山东seo推广多少钱
  • 网站建设销售顾问开场白wordpress版微信小程序
  • 网站建设后如何修改北京做网站好的
  • 网站做的长图能导出吗蚌埠建设银行网站
  • 笑话网站模版太原建站一条龙
  • 网站开发电脑内存要多少电商 网站 备案
  • 网站开发是什么语言手机网站定制
  • 现在有没有免费的网站如何在百度提交网站
  • 建一个网站多少钱?广州公共资源交易中心交易平台
  • 南沙做网站足球比赛直播雨燕
  • 西安学校网站建设报价楼盘动态
  • wordpress电子商务视频教程网站优化外包价格
  • 产品展示型网站模板wordpress音乐小工具
  • 网站建设费用会计科目湖北强涛建设工程有限公司网站
  • 如何在文本上做网站链接符号网站设计与制作是网页吗