我猜想到目前为止,您的代码是这样的:
import csv
import json
data: list[list[str]] = []
with open("input.csv", newline="") as f_in:
reader = csv.reader(f_in)
for row in reader:
data.append(row)
with open("data.json", "w") as f_out:
json.dump(data, f_out, indent=2)
为了解决您的第一个问题/担忧,即此JSON是否有效...
更大的概念是Python的json模块生成有效的json.如果在您转储数据时模块没有抱怨什么,那么JSON就是好的.
但为了更直接地解决您的问题,JSON可以看起来像很多不同的东西:
print(json.dumps(1))
print(json.dumps("A"))
print(json.dumps({}))
print(json.dumps([]))
每个dump()都会生成有效的JSON.我不知道如何正式证明这些是有效的,但我使用了trust种工具,如Python的json模块(它经过多年的实际使用,可能在全世界都得到了审查).我还进入了https://jsonlint.com/,直接输入了这些简单的例子,得到了所有人的"有效JSON".
现在,如何处理JSON?
您可以按原样处理它,也可以通过自己提供列名/键来创建所需的 struct (假设您知道数据代表什么):
data_keyed: list[dict[str, Any]] = []
with open("input.csv", newline="") as f_in:
reader = csv.reader(f_in)
for row in reader:
data_row = {"Col1": row[0], "Col2": row[1], "Col3": row[2]}
data_keyed.append(data_row)
with open("data_keyed.json", "w") as f_out:
json.dump(data_keyed, f_out, indent=2)
现在我们得到:
[
{
"Col1": "3",
"Col2": "8948",
"Col3": "f678"
},
{
"Col1": "3",
"Col2": "5654",
"Col3": "f644"
},
...