我想用 CSV 文件中的数据填充我的 json 消息。我希望每一行都是一个“新”json 对象。我正在使用 Python,完成后会将代码连接到 API。一些数据需要分类在“personalinfo”和“carinfo”下,我需要在正确的类别下填充正确的数据,如下面的“预期的 json 消息输出”所示。
这是我到目前为止所拥有的:
import csv
import json
csvfile = open('test.csv', 'r')
jsonfile = open('file.json', 'w')
fieldnames = ("firstname","r", "lastname","r", "age","r", "gender","r",
"model","r", "price","r", "loan","r")
reader = csv.DictReader(csvfile, fieldnames)
out = json.dumps( [ row for >row in reader ] )
jsonfile.write(out)
Run Code Online (Sandbox Code Playgroud)
我不知道如何添加两个“personalinfo”和“carinfo”类别。
csv 表示例:
import csv
import json
csvfile = open('test.csv', 'r')
jsonfile = open('file.json', 'w')
fieldnames = ("firstname","r", "lastname","r", "age","r", "gender","r",
"model","r", "price","r", "loan","r")
reader = csv.DictReader(csvfile, fieldnames)
out = json.dumps( [ row for >row in reader ] )
jsonfile.write(out)
Run Code Online (Sandbox Code Playgroud)
预期的 json 消息输出:
{
"personalinfo": {
"firstname": "Anna",
"lastname": "Andersson",
"age": "28",
"gender": "F",
"carinfo": [{
"car": "Audi",
"model": "A8"
}],
"price": 40,
"loan": "FALSE"
}
}
Run Code Online (Sandbox Code Playgroud)
下一条记录应该是一个新的 json 对象。
您需要将 csv 文件中的每一行数据转换为按照您描述的方式布局的 JSON 对象。这可以通过调用一个函数来完成,该函数row使用 a 从 csv 文件中获取字典csv.DictReader并执行以下操作:
import csv
import json
def make_record(row):
return {
"personalinfo": {
"firstname": row["FirstName"],
"lastname": row["LastName"],
"age": row["Age"],
"gender": row["gender"],
"carinfo": [
{
"car": row["Car"],
"model": row["model"]
}
],
"price": int(row["Price"]),
"loan": row["loan"]
}
}
with open('csv_test.csv', 'r', newline='') as csvfile, \
open('json_file.json', 'w') as jsonfile:
reader = csv.DictReader(csvfile, delimiter='\t')
out = json.dumps([make_record(row) for row in reader], indent=4)
jsonfile.write(out)
# Show results.
with open('json_file.json', 'r') as jsonfile:
print('results:')
print(json.dumps(json.load(jsonfile), indent=4))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1541 次 |
| 最近记录: |