我已经阅读了从平面csv创建嵌套JSON的内容,但对我而言没有帮助。
我有一个很大的电子表格,它是由Google文档创建的,包含11行和74列(某些列未占用)。
我在Google云端硬盘上创建了一个示例。导出为a时,CSV
它看起来像这样:
id,name,email,phone,picture01,picture02,picture03,status
1,Alice,alice@gmail.com,2131232,"image01_01
[this is an image]",image01_02,image01_03,single
2,Bob,bob@gmail.com,2854839,image02_01,"image02_02
[description to image 2]",,married
3,Frank,frank@gmail.com,987987,image03_01,image03_02,,single
4,Shawn,shawn@gmail.com,,image04_01,,,single
现在,我想要一个JSON
结构,如下所示:
{
"persons": [
{
"type": "config.profile",
"id": "1",
"email": "alice@gmail.com",
"pictureId": "p01",
"statusId": "s01"
},
{
"type": "config.pictures",
"id": "p01",
"album": [
{
"image": "image01_01",
"description": "this is an image"
},
{
"image": "image_01_02",
"description": ""
},
{
"image": "image_01_03",
"description": ""
}
]
},
{
"type": "config.status",
"id": "s01",
"status": "single"
},
{
"type": "config.profile",
"id": "2",
"email": "bob@gmail.com",
"pictureId": "p02",
"statusId": "s02"
},
{
"type": "config.pictures",
"id": "p02",
"album": [
{
"image": "image02_01",
"description": ""
},
{
"image": "image_02_02",
"description": "description to image 2"
}
]
},
{
"type": "config.status",
"id": "s02",
"status": "married"
}
]
}
以此类推。
我的理论方法是CSV
逐行遍历文件(这是第一个问题:现在每一行等于一行,但有时是几行,因此我需要计算逗号?)。每行等于一个块config.profile
中,包括id
,email
,pictureId
,和statusId
(正在生成后两者取决于行编号)。
然后,为每一行config.pictures
生成id
一个与插入到该行中的块相同的config.profile
块。的album
是一样多的元素的图片中给出的阵列。
最后,每一行都有一个config.status
块,该块又与id
中给出的块相同config.profile
,并且其中一个条目status
具有相应的状态。
我完全不知道如何创建嵌套和条件JSON文件。
我刚刚得到的地方,我转换的点CSV
为有效JSON
,没有任何嵌套和附加信息,不直接给定CSV
,如type
,pictureId
,statusId
,等。
任何帮助表示赞赏。如果使用另一种脚本语言(例如ruby
)编程起来比较容易,我很乐意切换到那些语言。
在有人认为这是家庭作业之类的东西之前。它不是。我只想自动化原本非常繁琐的复制和粘贴任务。
该csv
模块将很好地处理CSV读数-包括处理引号内的换行符。
import csv
with open('my_csv.csv') as csv_file:
for row in csv.reader(csv_file):
# do work
该csv.reader
对象是一个迭代器-
您可以使用循环来遍历CSV中的行for
。每行都是一个列表,因此您可以将每个字段都以row[0]
,row[1]
等形式获取。请注意,这将加载第一行(在您的情况下仅包含字段名称)。
正如我们在第一行中给予我们的字段名,我们可以使用csv.DictReader
使每一行的字段可以作为被访问row['id']
,row['name']
等等。这也将跳过第一行我们:
import csv
with open('my_csv.csv') as csv_file:
for row in csv.DictReader(csv_file):
# do work
对于JSON导出,请使用json
模块。json.dumps()
将采用Python数据结构(如列表和字典)并返回适当的JSON字符串:
import json
my_data = {'id': 123, 'name': 'Test User', 'emails': ['test@example.com', 'test@hotmail.com']}
my_data_json = json.dumps(my_data)
如果要完全按照发布的方式生成JSON输出,则可以执行以下操作:
output = {'persons': []}
with open('my_csv.csv') as csv_file:
for person in csv.DictReader(csv_file):
output['persons'].append({
'type': 'config.profile',
'id': person['id'],
# ...add other fields (email etc) here...
})
# ...do similar for config.pictures, config.status, etc...
output_json = json.dumps(output)
output_json
将包含所需的JSON输出。
但是,我建议您仔细考虑要获取的JSON输出的结构-目前,您正在定义一个无用的外部字典,并且将所有“ config
”数据直接添加到“
persons
‘-您可能需要重新考虑这一点。
问题内容: 我正在尝试从深度嵌套的JSON字符串创建单个Pandas DataFrame对象。 JSON模式是: 期望的结果 我需要将其展平以产生一张桌子: 第一列是值,其余列是键的值并存储在列表中。 到目前为止,我已经 是一个列表,其中长度等于个人数量,即。df对象只是返回 如何遍历该列表以获取dict值并创建N个不同的列?我应该尝试为该列表创建一个DataFrame ,重塑它的形状,然后用角色
问题内容: 我有正在使用nodeJS读取的csv文件。我在阅读之前将每个文件转换为文本。 文件中的每一行都有以’=’分隔的数据。 每行看起来像 “ =“之前的第一部分代表我应用程序中json对象的索引。我的目的是解析此数据并为其构建json表示,以便上面的行成为 使用javascript / node js; 如何将应该表示嵌套JSON键序列的字符串转换为上述json对象? 问题答案: 您可以分割
问题内容: 说我要制作以下JSON 目前,这就是我实现的方式 似乎应该有一个更好的方法来做到这一点,而不是做更多的事情,然后将它们放置在主体中。有比我正在使用的方法更好的动态构建方法吗? 在此先感谢您的帮助! 问题答案: 如果您处理大量JSON数据,我真的建议您使用Gson或Jackson。这要方便得多,并且两个库都很好地支持与Java对象之间的相互转换(与通过JSONObjects手动构建JSO
我有一个这样的 CSV: 我使用spliter逐行处理记录,然后在dataweave中使用splitBy“,”将记录转换为地图。但我如何才能为“;”做另一个层次的拆分呢?SplitBy不允许多个分隔符,数据编织中的CSV类型也不允许。 最终,我想要一个这样的JSON: 有什么想法吗?
下面的代码是我的适配器 下面的代码是我的片段,带有虚拟arraylist数据
问题内容: 我正在尝试从JSON创建嵌套的UL。我能够遍历并从对象中获取数据,但是在构建嵌套UL时遇到了麻烦。我认为’.append’方法放置在错误的位置。生成的LI都分组在一起。我如何创建一个循环(或者也可以用另一种方法)来构建带有正确嵌套的子菜单LI的UL?我曾尝试使用其他类似的帖子来解决我的问题,但是我的数据和代码似乎没有任何意义。对此有些不解之举- 我尝试了几种方法来创建此动态列表,但到目