我遇到了一个问题,我不知道如何将 CSV 文件中的“嵌套 JSON 对象”转换为 JSON 对象。
所以我有一个具有以下值的 CSV 文件:
1, 12385, {'message': 'test 1', 'EngineId': 3, 'PersonId': 1, 'GUID': '0ace2-02d8-4eb6-b2f0-63bb10829cd4s56'}, 6486D, TestSender1
2, 12347, {'message': 'test 2', 'EngineId': 3, 'PersonId': 2, 'GUID': 'c6d25672-cb17-45e8-87be-46a6cf14e76b'}, 8743F, TestSender2
我编写了一个 python 脚本,将这个 CSV 文件转换为数组内的 JSON 文件。这是我使用以下 python 脚本完成的
import json
import csv
with open("data.csv","r") as f:
reader = csv.reader(f)
data = []
for row in reader:
data.append({"id": row[0],
"receiver": row[1],
"payload": row[2],
"operator": row[3],
"sender": row[4]})
with open("data.json", "w") as f:
json.dump(data, f, indent=4)
我面临的问题是我没有在“有效载荷”中获得正确的值,我希望它是一个嵌套的 JSON 对象。我得到的结果如下:
[
{
"id": "1",
"receiver": " 12385",
"payload": " {'message': 'test 1'",
"operator": " 'EngineId': 3",
"sender": " 'PersonId': 1"
},
{
"id": "2",
"receiver": " 12347",
"payload": " {'message': 'test 2'",
"operator": " 'EngineId': 3",
"sender": " 'PersonId': 2"
}
]
所以我的问题是,当我进行从 CSV 到 JSON 的转换时,如何为“有效载荷”创建嵌套的 JSON 对象?我认为主要问题是它被视为一个字符串而不是一个对象。
请尝试以下操作。您可以像以前一样执行所有操作,但合并回第 3 列中的所有元素并通过ast.literal_eval
.
import json
import csv
import ast
with open("data.csv","r") as f:
reader = csv.reader(f,skipinitialspace=True)
data = [{"id": ident,
"receiver": rcv,
"payload": ast.literal_eval(','.join(payload)),
"operator": op,
"sender": snd}
for ident,rcv,*payload,op,snd in reader]
with open("data.json", "w") as f:
json.dump(data, f, indent=4)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句