将嵌套的json对象转化为json数组(python列表推导式)

article/2025/9/26 21:22:49

需求说明

想将一个json文件录入MongoDB,如下图所示。
在这里插入图片描述
但是原文件是嵌套json对象的形式,如果直接导入MongoDB,会整体变成一个Document:
在这里插入图片描述

注:MongoDB中的Document相当于SQL中Row的概念。

而我希望一个Document对应一个式神,即如下图所示的效果。
在这里插入图片描述
这就需要将原来的json嵌套对象转为json列表。可以看出,原json中,对象内也包含对象名称的键值对,因此转换过程中无需做什么多余的操作,只要把原先式神名称的键去掉即可,变成如下状态:
在这里插入图片描述

实现代码

import json# 读取json文件,存为json嵌套对象
with open('paj_ssl.json', encoding='utf8') as f: paj_ssl_json_obj = json.load(f) # 用列表推导式,提取字典中所有值,转为列表
paj_ssl_json_arr = [paj_ssl_json_obj[key] for key in paj_ssl_json_obj] # 将json列表存入json文件
with open('data2.json', 'w', encoding='utf8') as f:json.dump(paj_ssl_json_arr, f, indent=4, ensure_ascii=False)

解释

json数据结构理解

JSON文件最外层的花括号 {} 表示的是一个对象,而方括号 [] 表示的是一个数组。对象和数组都是JSON中的两种结构。

  • 对象:用花括号 {} 包裹,是一个无序的名称/值对集合。每个名称/值对之间用逗号 , 分隔,名称和值之间用冒号 : 分隔。例如原先的json,实际上形如:
{'Tom':{'name':'Tom','age':11,'hometome':'US'},'Jerry':{'name':'Jerry','age':12,'hometome':'UK'}			
}
  • 数组:用方括号 [] 包裹,是一个有序的值集合。每个值之间用逗号 , 分隔。例如转化的目标,实际上形如:
[{'name':'Tom','age':11,'hometown':'US'},{'name':'Jerry','age':12,'hometown':'UK'}			
]

语句[obj[key] for key in obj]

(本节解释来源于NewBing)
这段代码是Python中的列表推导式,它的作用是从一个字典中提取所有的值。其中,obj是一个字典,key是字典中的键,obj[key]则是对应键的值。这段代码等价于下面这个for循环:

result = []
for key in obj:result.append(obj[key])

你可以在Python交互式环境中尝试一下:

>>> obj = {'a': 1, 'b': 2, 'c': 3}
>>> [obj[key] for key in obj]
[1, 2, 3]

解决中文乱码问题的两个参数

encoding='utf8:指定编码格式为 UTF-8,这样在序列化时,就可以正确地处理中文字符。
ensure_ascii=False:默认情况下,JSON 序列化时会将非 ASCII 码的字符转义为 ASCII 码,这样会导致中文字符变成 Unicode 码。如果设置为 False,则可以保证输出真正的中文字符。


http://chatgpt.dhexx.cn/article/xLxGjjqu.shtml

相关文章

Oracle 基础总结:日期函数专题

Oracle 基础总结:日期函数专题 日期函数:1、SYSDATE2、日期函数:(1) MONTHS_BETWEEN(日期1,日期2):返回两个日期相差的月数。(2) ADD_MONTHS(日期,数值&#…

numtodsinterval mysql用法_Oracle函数 - 日期函数详解

Oracle中的时间类型只有date和TIMESTAMP,TIMESTAMP是比date更精确的类型。日期时间函数用于处理时间类型的数据,Oracle以7位数字格式来存放日期数据,包括世纪、年、月、日、小时、分钟、秒,并且默认日期显式格式为“DD-MON-YY”。…

常用Oracle日期函数及聚合函数

1、常用Oracle日期函数 (1)CURRENT_DATE CURRENT_DATE是一个SQL标准函数,返回当前日期(不带时间),可以在SELECT语句中使用。例如: 1 SELECT CURRENT_DATE FROM DUAL; 返回当前日期&#xff…

Oracle数据库之日期函数

今天给大家介绍一下oracle数据中的日期函数的用法。废话不多说,我们看一下oracle给我们提供了那些函数? 1.sysdate   用途:获取当前系统时间。 2.to_date(字符类型,日期类型) 用途:将字符类型转化成日期类型的函数,…

Oracle日期函数总结

1.日期和字符转换函数用法:(to_char,to_date,to_namber) 使用to_date函数将字符转换成数字。 使用to_char函数对日期的转换,并也可以对数字转换。 使用to_namber函数将字符转换成日期 格式:必须包含在单…

ORACLE之日期函数

日期函数: 运算规律: 日期数字 日期 日期-数字 日期 日期-日期 数字(天数) -- 查询当前日期: SELECT SYSDATE FROM DUAL;-- 查询一百天前的日期时间 SELECT (SYSDATE-100) FROM DUAL; -- 在指定日期上加上指定月数…

Oracle函数--日期函数

3.日期函数 months_between,add_months,next_day,last_day,round,trunc,sysdate sysdate关键字,表示系统的当前时间 select sysdate from dual; 结果:2022/5/4 12:38:4 select sysdate1 from dual; 当前时间加1天 结果:202…

Oracle 日期时间函数详解

文章目录 1 日期函数2 日期格式3 类型转换 1 日期函数 1. 常用日期函数(1) add_months(date, n) : n 个月前,-n 个月后(2) months_between(date1, date2) : 月份差 date1 - date22. 时区(了解即可)(1) select dbtimezone from dual;…

Oracle日期函数和转换函数

一、日期函数 日期函数用于处理date类型的数据,两个日期相减返回日期之间相差的天数。日期不允许做加法运算,无意义。 常见代表符号:yyyy 年,mm 月,dd 日,hh 小时,mi 分钟,ss 秒&…

Oracle 日期时间函数大全

前言 设置日期语言 alter session set NLS_DATE_LANGUAGEAMERICAN;alter session set NLS_DATE_LANGUAGESIMPLIFIED CHINESE; --也可以这样写:to_date(2021-06-30 15:23:45,yyyy-mm-dd hh24:mi:ss,NLS_DATE_LANGUAGEAMERICAN ) 可通过如下语句查看: se…

这12类Oracle日期函数,全都给你总结了

在使用Oracle数据库过程中,对日期的使用不可避免,那Oracle中的日期函数有哪些呢?本篇就日期函数进行整理了,不一定全部了解记住,但是要做到心中有数,以后在写脚本的时候就不会绕弯子了。 1、sysdate、curr…

Oracle日期函数

Oracle日期类型函数是操作日期、时间类型的相关数据,返回日期时间类型或数字类型结果,常用的函数有:SYSDATE()、ADD_MONTHS()、LAST_DAY()、TRUNC()、ROUND()等等。 系统日期、时间函数 SYSDAT…

Oracle函数——日期函数

Oracle中的时间类型只有date和TIMESTAMP,TIMESTAMP是比date更精确的类型。日期时间函数用于处理时间类型的数据,Oracle以7位数字格式来存放日期数据,包括世纪、年、月、日、小时、分钟、秒,并且默认日期显式格式为“DD-MON-YY”。…

回归问题的评价指标

回归问题的评价指标有很多,这里一一进行详细分类: 点对点误差 MSE均方误差 MSE(Mean Square Error): 均方误差描述了样本真实值与预测值差方求和的平均值,在机器学习中,利用均方误差最小化优化模型的方法称…

区分回归问题和分类问题

回归问题和分类问题的区别 回归问题 用一个经典的问题来解释:假设你想买房子,手头上仅有的是之前出售的房子的占地面积大小和房子的价格,你想凭借手头上的这些数据来买一套不错的房子,那么你仅有的关于房子的信息是房子的占地大小…

LSTM回归问题

LSTM 解决回归问题时,出现了 model.predict() 输出的值几乎是常数值的问题,后来发现是因为数据没有标准化(归一化),导致 loss 不下降,也就是不收敛。后来加入了数据的标准化之后,就可以拟合了。…

数据分析——随机森林解决回归问题

下表为训练数据集,特征向量只有一维,根据此数据表建立回归决策树。 在本数据集中,只有一个特征变量,最优切分变量自然是x。接下来考虑9个切分点{1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5},根据下式计算每个待切分点的损失…

处理回归问题常见的算法

7.处理回归问题常见的算法: 回归属于有监督学习的一种,其从连续的统计数据中的到数学模型,然后使用生成的模型用于预测和分类。线性回归:给定数据集,其中线性回归模型通过对数据集的学习生成一个线性模型,…

深度学习 分类问题与回归问题

分类问题与回归问题 分类与回归 一、分类问题1.1分类性能度量:(1)准确率(accuracy)*(2)精确率(percision)*(3)召回率(recall&#xff…

Python实现---用KNN解决回归问题

KNN用于回归问题 KNN不仅可以用于分类问题,也可以用回归问题。 主要算法思路就是:使用KNN计算某个数据点的预测值时,模型从训练数据集中选择离该数据点最近的k个数据点,并且把这些数据的y值取均值,把求出的这个均值作…