json Deserialization of Python Objects

openweathermap.json


{
	"coord": {
		"lon": 114.0683, "lat":22.5455
	}

	,
	"weather":[ {
		"id": 803, "main":"Clouds", "description":"多云", "icon":"04d"
	}

	],
	"base":"stations",
	"main": {
		"temp": 299.1, "feels_like":299.1, "temp_min":296.39, "temp_max":300.29, "pressure":1018, "humidity":79, "sea_level":1018, "grnd_level":1017
	}

	,
	"visibility":10000,
	"wind": {
		"speed": 2.73, "deg":137, "gust":3.32
	}

	,
	"clouds": {
		"all": 82
	}

	,
	"dt":1702530001,
	"sys": {
		"type": 2, "id":2031340, "country":"CN", "sunrise":1702508106, "sunset":1702546869
	}

	,
	"timezone":28800,
	"id":1795565,
	"name":"Shenzhen",
	"cod":200
}

# encoding: utf-8
# 版权所有 2023 涂聚文有限公司
# 许可信息查看:
# 描述:
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2023.1 python 3.11
# Datetime  : 2023/12/14 22:14
# User      : geovindu
# Product   : PyCharm
# Project   : pyBaiduAi
# File      : Clouds.py
# explain   : 学习

import json
import pickle
from typing import List
from typing import Any
from dataclasses import dataclass



@dataclass
class Clouds:
    all: int

    @staticmethod
    def from_dict(obj: Any) -> 'Clouds':
        _all = int(obj.get("all"))
        return Clouds(_all)


@dataclass
class Coord:
    lon: float
    """
    经度
    """
    lat: float
    """
    纬度
    """
    @staticmethod
    def from_dict(obj: Any) -> 'Coord':
        _lon = float(obj.get("lon"))
        _lat = float(obj.get("lat"))
        return Coord(_lon, _lat)


@dataclass
class Main:
    """

    """
    temp: float
    """
    温度 
    """

    feels_like: float
    temp_min: float
    """
    最低温
    """
    temp_max: float
    """
    最高温
    """
    pressure: int
    humidity: int
    """
    湿魔
    """
    sea_level: int
    grnd_level: int

    @staticmethod
    def from_dict(obj: Any) -> 'Main':
        _temp = float(obj.get("temp"))
        _feels_like = float(obj.get("feels_like"))
        _temp_min = float(obj.get("temp_min"))
        _temp_max = float(obj.get("temp_max"))
        _pressure = int(obj.get("pressure"))
        _humidity = int(obj.get("humidity"))
        _sea_level = int(obj.get("sea_level"))
        _grnd_level = int(obj.get("grnd_level"))
        return Main(_temp, _feels_like, _temp_min, _temp_max, _pressure, _humidity, _sea_level, _grnd_level)


@dataclass
class Sys:
    """
    系统信息
    """
    type: int
    id: int
    country: str
    """
    所属国家
    """
    sunrise: int
    """
    日出时间戳
    """
    sunset: int
    """
    日落时间戳
    """

    @staticmethod
    def from_dict(obj: Any) -> 'Sys':
        _type = int(obj.get("type"))
        _id = int(obj.get("id"))
        _country = str(obj.get("country"))
        _sunrise = int(obj.get("sunrise"))
        _sunset = int(obj.get("sunset"))
        return Sys(_type, _id, _country, _sunrise, _sunset)


@dataclass
class Weather:
    """
    天气情况
    """
    id: int
    main: str
    description: str
    """
    天气
    """
    icon: str
    """
    图标ID
    """

    @staticmethod
    def from_dict(obj: Any) -> 'Weather':
        _id = int(obj.get("id"))
        _main = str(obj.get("main"))
        _description = str(obj.get("description"))
        _icon = str(obj.get("icon"))
        return Weather(_id, _main, _description, _icon)


@dataclass
class Wind:
    """
    风况
    """
    speed: float
    """
    风速
    """
    deg: int
    gust: float

    @staticmethod
    def from_dict(obj: Any) -> 'Wind':
        _speed = float(obj.get("speed"))
        _deg = int(obj.get("deg"))
        _gust = float(obj.get("gust"))
        return Wind(_speed, _deg, _gust)

@dataclass
class OpenWeather:
    """"
    天气类
    """
    coord: Coord
    weather: List[Weather]
    base: str
    main: Main
    visibility: int
    wind: Wind
    clouds: Clouds
    dt: int
    sys: Sys
    timezone: int
    id: int
    name: str
    cod: int

    @staticmethod
    def from_dict(obj: Any) -> 'OpenWeather':
        _coord = Coord.from_dict(obj.get("coord"))
        _weather = [Weather.from_dict(y) for y in obj.get("weather")]
        _base = str(obj.get("base"))
        _main = Main.from_dict(obj.get("main"))
        _visibility = int(obj.get("visibility"))
        _wind = Wind.from_dict(obj.get("wind"))
        _clouds = Clouds.from_dict(obj.get("clouds"))
        _dt = int(obj.get("dt"))
        _sys = Sys.from_dict(obj.get("sys"))
        _timezone = int(obj.get("timezone"))
        _id = int(obj.get("id"))
        _name = str(obj.get("name"))
        _cod = int(obj.get("cod"))
        return OpenWeather(_coord, _weather, _base, _main, _visibility, _wind, _clouds, _dt, _sys, _timezone, _id, _name, _cod)

调用:


import Model.Clouds



def print_hi(name):
    # Use a breakpoint in the code line below to debug your script.
    print(f'Hi, {name} world,geovindu,涂聚文')  # Press Ctrl+F8 to toggle the breakpoint.


# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    print_hi('PyCharm,geovindu')

    #deserialization process:
    with open('openweathermap.json',encoding='utf-8') as json_file:
        data = json.load(json_file)
        print("data from file:")
        print(type(data))
        root=Model.Clouds.OpenWeather.from_dict(data)
        print(root)
        print("湿度",root.main.humidity)
        print("天气:", root.weather[0].description)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/245056.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

产品Axure的安装以及组件介绍

Axure介绍: Axure是一款用户体验设计工具,可以用于创建交互式原型、线框图和设计文档。它支持快速原型开发、界面设计、信息架构、流程图和注释等功能,可以帮助设计师快速地创建和共享交互式原型,从而更好地与客户和团队协作。 …

利用Pytorch预训练模型进行图像分类

Use Pre-trained models for Image Classification. # This post is rectified on the base of https://learnopencv.com/pytorch-for-beginners-image-classification-using-pre-trained-models/# And we have re-orginaized the code script.预训练模型(Pre-trained models)…

回溯热门问题

关卡名 回溯热门问题 我会了✔️ 内容 1.组合总和问题 ✔️ 2.分割回文串问题 ✔️ 3.子集问题 ✔️ 4.排列问题 ✔️ 5.字母全排列问题 ✔️ 6.单词搜索 ✔️ 1. 组合总和问题 LeetCode39题目要求:给你一个无重复元素的整数数组candidates和一个目标整数 ta…

数据结构学习 12字母迷宫

dfs 回溯 剪枝 这个题和dfs有关,但是我之前没有接触过,我看了这一篇很好的文章,看完之后写的答案。 我觉得很好的总结: dfs模板 int check(参数) {if(满足条件)return 1;return 0; }void dfs(int step) {判断边界{相应操作}尝试…

自考 00023高等数学考点整理

空间直角坐标系 右手法则 向量 点到点的距离 点到直线的距离点到平面的距离向量平行向量垂直向量投影向量数乘 a*b axb(行列式计算)直线夹角、直线与平面夹角平面点法式方程空间直角坐标系 右手法则向量数量积、向量积 平行四边形法则、三角形法则 第二章 多元函数 微分学…

VS2022 将项目打包,导出为exe运行

我有一个在 VS2022 上开发的程序,基于.net 6框架, 想打包成 .exe程序,以在另一个没有安装VS的机器上运行,另一个机器是Win7系统,上面安装了.net 6框架。 虽然网上很多教程,需要安装Project Installer,配置A…

从零开始创建一个项目,springBoot+mybatisPlus+mysql+swagger+maven

一,前提 从零开始创建一个项目,绑定了数据库 用到的技术栈:springBootmybatisPlusmysqlswaggermaven 二,创建项目步骤 1,创建项目 创建出来的项目结构如图所示 2,修改配置文件 因为我比较习惯yml语言&…

算法:最小生成树

文章目录 生成树Kruskal算法Prim算法 本篇总结的是最小生成树算法 生成树 连通图中的每一棵生成树,都是原图的一个极大无环子图,即:从其中删去任何一条边,生成树就不在连通;反之,在其中引入任何一条新边&…

路由器交换机配置备份工具

本文主要介绍fast-backup 2.0软件的使用,fast-backup 2.0是可以在任何Windows系统上运行的网络运维软件,帮助运维人员减少大量重复的交换机等设备的配置下载工作,支持的厂商有华为和华三的网络设备和安全设备。 功能特性: 支持S…

提升数据分析效率:Amazon S3 Express One Zone数据湖实战教程

前言 什么是 Amazon S3?什么是 S3 Express One Zone?实现概述 技术架构组件实现步骤概览 第一步:构建数据湖的基础第二步:选择并查看数据集第三步:在 Athena 中搭建架构第四步:数据转换与优化第五步&#x…

数组笔试题解析(下)

数组面试题解析 字符数组 (一) 我们上一篇文章学习了一维数组的面试题解析内容和字符数组的部分内容,我们这篇文章讲解一下字符数组和指针剩余面试题的解析内容,那现在,我们开始吧。 我们继续看一组字符数组的面试…

binkw32.dll丢失怎么办?这5个方法都可以解决binkw32.dll丢失问题

binkw32.dll文件是什么? binkw32.dll是一个动态链接库文件,它是Windows操作系统中的一个重要组件。它包含了许多用于处理多媒体文件的函数和资源,如视频、音频等。当我们在电脑上打开或播放某些多媒体文件时,系统会调用binkw32.d…

【算法】滑动窗口

目录 基本思想 应用场景 应用实例 总结 基本思想 滑动窗口,也叫尺取法,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果,可以用来解决一些查找满足一定条件的连续区间的性质(长度等)…

【活动回顾】Databend 云数仓与 Databend Playground 扩展组件介绍

2023 年 12 月 7 日,作为 KubeSphere 的合作伙伴,Databend 荣幸地受邀参与了 KubeSphere 社区主办的云原生技术直播活动。本次活动的核心议题为「Databend 云数仓与 Databend Playground 扩展组件介绍」,此次分享由 Databend Labs 的研发工程…

Vue3-08-条件渲染-v-if 的基本使用

v-if 是什么 v-if 一个指令, 它是用来根据条件表达式,进行选择性地【展示】/【不展示】html元素的。比如 : 有一个按钮A,当条件为真时,展示该按钮;条件为假时,不展示该按钮。与 js 中的 条件判…

如何部署Portainer容器管理工具+cpolar内网穿透实现公网访问管理界面

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 前言 本文主要介绍如何本地安装Portainer并结合内网穿透工具实现任意浏览器远程访问管理界面。Portainer 是一个轻量级…

一文5000字从0到1构建高效的接口自动化测试框架思路

在选择接口测试自动化框架时,需要根据团队的技术栈和项目需求来综合考虑。对于测试团队来说,使用Python相关的测试框架更为便捷。无论选择哪种框架,重要的是确保 框架功能完备,易于维护和扩展,提高测试效率和准确性。…

挺进云存储,天翼云全新一代XSSD勇立潮头

引言:自研高性能分布式存储引擎LAVA,实现云硬盘持续创新获得新突。 【全球云观察 | 科技热点关注】 作为算力基础设施的基石,云存储的发展一直备受公有云厂商所重视,对拉动云厂商营收规模带来重要价值,就…

山海鲸开发者:展现数据可视化在各领域的无限可能

作为一名山海鲸可视化软件的内部开发者,我对这款软件投入了大量的经历以及含有深深的情感。下面,我从这款软件应用场景下手,带大家探秘这款软件的多种可能性以及我们的用心。 首先,从行业角度来看,山海鲸可视化软件可以…

06.迪米特法则(Demeter Principle)

明 嘉靖四十年 江南织造总局 小黄门唯唯诺诺的听完了镇守太监杨金水的训斥,赶忙回答:“知道了,干爹!” “知道什么?!!” 杨金水打断了他的话,眼神突然变得凌厉起来: “有…