JSON字段是包含JSON的字符串;如何将其转换为正确的JSON?

2024-05-28 23:55:14 发布

您现在位置:Python中文网/ 问答频道 /正文

将CSV文件转换为JSON时,我得到如下输出:

 {
        "id": "8835435",
        "userid": "1111",
        "key": "diary_notifications",
        "setting": "{\n  \"standup_reminder\" : false,\n  \"weight_reminder_diary\" : true,\n  \"weight_reminder_notification\" : false,\n  \"meal_reminders_lunch\" : false,\n  \"meal_reminders_breakfast\" : false,\n  \"meal_reminders_snack\" : false,\n  \"weight_reminder_calendar\" : false,\n  \"weight_reminder_time\" : false,\n  \"meal_reminders_dinner\" : false,\n  \"water_reminders\" : false,\n  \"walking_reminder\" : false,\n  \"sleep_reminder\" : false\n}",
        "lastupdated": "2018-03-27 10:48:51",
        "creatd": "2014-11-13 15:47:23"
    }

如何从setting中删除换行符,并在Python代码中将字段转换为正确的列表?我的代码是:

import csv
import json

with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    next(reader)
    data = []
    for row in reader:
        data.append({"id":row[0],"userid":row[1],"key":row[2],"setting":row[3],"lastupdated":row[4],"creatd":row[5]})
with open ("users.json","w") as f:
    json.dump(data,f,indent=4)

上面需要添加什么


Tags: csvkeyidjsonfalsedatasettingreader
1条回答
网友
1楼 · 发布于 2024-05-28 23:55:14

setting字段包含一个Json字符串,因此您应该使用json模块对其进行解析。当然,只有某些行包含Json字符串,而其他行仅包含普通字符串,您应该保护try块中的json.loads

import csv
import json
with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    next(reader)
    data = []
    for row in reader:
        try:
            row[3] = json.loads(row[3])
        except json.JSONDecodeError:
            pass
        data.append({"id":row[0],"userid":row[1],"key":row[2],"setting":row[3],
         "lastupdated":row[4],"creatd":row[5]})
with open ("users.json","w") as f:
    json.dump(data,f,indent=4)

它应该给出(或多或少):

{
    "id": "8835435",
    "userid": "1111",
    "key": "diary_notifications",
    "setting": {
        "standup_reminder": false,
        "weight_reminder_diary": true,
        "weight_reminder_notification": false,
        "meal_reminders_lunch": false,
        "meal_reminders_breakfast": false,
        "meal_reminders_snack": false,
        "weight_reminder_calendar": false,
        "weight_reminder_time": false,
        "meal_reminders_dinner": false,
        "water_reminders": false,
        "walking_reminder": false,
        "sleep_reminder": false
    },
    "lastupdated": "2018-03-27 10:48:51",
    "creatd": "2014-11-13 15:47:23"
}

相关问题 更多 >

    热门问题