python 解读JSON文件,一文搞懂!

铁佛  金牌会员 | 2024-11-24 03:39:53 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 823|帖子 823|积分 2469

一、JSON格式详解

        全部 JSON 数据需要包裹在一个花括号中。
  1. {
  2.     "sites": [
  3.     { "name":"maybe" , "url":"www.maybe.com" },
  4.     { "name":"google" , "url":"www.google.com" }
  5.     ]
  6. }
复制代码


  • Object(对象):键/值对("key":"value")的集合。集合使用花括号{ }界说。多个键/值对之间使用逗号,分隔,比方{"name":"pink","url":"unknown"}
  • Array(数组):值的有序集合,使用方括号[ ]界说,数组中每个值之间使用逗号 ,进行分隔。
1. 基本语法



  • 值可以是数字、字符串、布尔值、数组、对象、null;
  • 键必须是唯一的,不能重复;
  • 不可以使用八进制或十六进制体现数字。
  • 不支持注释
  • 可以嵌套
2. 数据类型

        number:JSON 中不区分整型和浮点型。此外,JSON 中不能使用八进制和十六进制体现数字,但可以使用 e 或 E 来体现 10 的指数。
  1. {
  2.     "number_1" : 20,
  3.     "number_2" : -21.5,
  4.     "number_3" : 1.0E+1
  5. }  
复制代码
        value:null 和 true/false
        object:JSON 中,对象由花括号{ }以及其中的若干键/值对构成,一个对象中可以包罗零个或多个键/值对,每个键/值对之间需要使用逗号,分隔.
  1. {
  2.     "author": {
  3.         "name": "C",
  4.         "description": "C语言"
  5.     }
  6. }
复制代码
        array:JSON 中,数组由方括号[ ]和其中的若干值构成,值可以是 JSON 中支持的恣意类型,每个值之间使用逗号,进行分隔。
  1. {
  2.     "course" : [
  3.         "JSON",
  4.         "CSS",
  5.         {
  6.             "ok" : "well",
  7.             "how" : "fine"
  8.         },
  9.         [
  10.             3.1,
  11.             fasle
  12.         ],
  13.         null
  14.     ]
  15. }
复制代码
二、python

1. 数据文件(data.json)

  1. {
  2.     "employee": {
  3.         "name": "John Doe",
  4.         "age": 35,
  5.         "department": {
  6.             "name": "Engineering",
  7.             "location": "Building A"
  8.         }
  9.     }
  10. }
复制代码
2.原生python剖析

        需要导入JSON包进行文件剖析。
  1. import json
  2. # 读取 JSON 数据
  3. with open('data/data.json', 'r') as f:
  4.     json_data = f.read()
  5. # 解析 JSON 数据
  6. data = json.loads(json_data)
  7. print(type(data))  # dict
  8. for key, value in data.items():  # 遍历第一层
  9.     print(f"Key: {key}, Value: {value}")
  10.     # 如果值是字典,继续遍历第二层
  11.     if isinstance(value, dict):
  12.         for sub_key, sub_value in value.items():  # 遍历第二层
  13.             print(f"  Sub-key: {sub_key}, Sub-value: {sub_value}")
  14.             # 如果第二层的值还是字典,进一步处理
  15.             if isinstance(sub_value, dict):
  16.                 for deep_key, deep_value in sub_value.items():
  17.                     print(f"    Deep-key: {deep_key}, Deep-value: {deep_value}")
复制代码
3. pandas

        需要导入pandas包进行文件剖析。
  1. import pandas as pd
  2. path = 'data/data.json'
  3. # 1. 打开并读取 JSON 文件
  4. df = pd.read_json(path)
  5. print(type(df))  # DataFrame
  6. # 2. 按行解析 JSON 数据
  7. x = df.to_dict(orient='records')
  8. print(type(x))  # list ,其中每个元素是一个字典
  9. # 3. 按列解析 JSON 数据
  10. y = df.to_dict(orient='list')
  11. print(type(y))  # dict 类型,其中每个键的值是列表
  12. # 4. 扁平化嵌套的 JSON 数据
  13. x_normalized = pd.json_normalize(x)
  14. print(x_normalized)
  15. # 5. 将 DataFrame 转换为 JSON 格式
  16. json_data = df.to_json()
  17. print(json_data)
  18. # 6. 将 DataFrame 写入 JSON 文件
  19. df.to_json('output.json')
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

铁佛

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表