在python中将CSV转换为JSON时如何控制节点名称

时间:2019-06-27 16:03:53

标签: python json csv

我在python中使用了一个简单的csv到json脚本,并且我已经使用此命令成功将CSV转换为JSON ...

csvFilePath = ("x.csv")

# Read the CSV and add the data to a dictionary
data = {}
with open(csvFilePath) as csvFile:
    csvReader = csv.DictReader(csvFile)
    for csvRow in csvReader:
        objectid = csvRow["objectid"]
        data[objectid] = csvRow
        d = csvrow

# Converts dictionary to JSON list
json_string = json.dumps([data], indent = 4)

生成的JSON看起来像这样...

[
{
    "15494": {
        "status": "Open", 
        "site_name": "Healthpromed Municipality of Vieques", 
        "objectid": "15494", 
        "utilities": "No", 
        "site_dashboard_surrogate_key": "BPS-H80-019569", 
        "supplies": "No", 
        "structural": "No", 
        "staff": "No"
    }, 
    "1": {
        "status": "Closed", 
        "site_name": "PUBLIC HEALTH AND HUMAN SERVICES, MONTANA DEPARTMENT OF", 
        "objectid": "1", 
        "utilities": "No", 
        "site_dashboard_surrogate_key": "010478A2-14EF-4B7B-84A0-2618F311D82F", 
        "supplies": "No", 
        "structural": "No", 
        "staff": "No"
    }
}]

我需要帮助更改由“ objectid”设置为“ attributes”的节点名称(即“ 15494”,“ 1”)

我想要的代码应如下所示...

[
{
    "attributes": {
        "status": "Open", 
        "site_name": "Healthpromed Municipality of Vieques", 
        "objectid": "15494", 
        "utilities": "No", 
        "site_dashboard_surrogate_key": "BPS-H80-019569", 
        "supplies": "No", 
        "structural": "No", 
        "staff": "No"
    }, 
    "attributes": {
        "status": "Closed", 
        "site_name": "PUBLIC HEALTH AND HUMAN SERVICES, MONTANA DEPARTMENT OF", 
        "objectid": "1", 
        "utilities": "No", 
        "site_dashboard_surrogate_key": "010478A2-14EF-4B7B-84A0-2618F311D82F", 
        "supplies": "No", 
        "structural": "No", 
        "staff": "No"
    }
}]

有什么想法吗?我机智到此为止。我试图在for循环中将objectid = csvRow [“ objectid”]替换为[“ attributes”],但它只会覆盖第一个条目。

1 个答案:

答案 0 :(得分:0)

未经测试,但我想这是 ArcGIS REST API 文档所需要的。希望对您有所帮助:)

csvFilePath = ("x.csv")

# Read the CSV and add the data to a dictionary
data = [] # make it a list
object = {} # initialize a dictionary
with open(csvFilePath) as csvFile:
    csvReader = csv.DictReader(csvFile)
    for csvRow in csvReader:
        object['attributes'] = csvRow["objectid"] # create dictionary
        data.append(dict(object)); # append every dictionary to list
        d = csvrow

# Converts dictionary to JSON list
json_string = json.dumps(data, indent = 4) # make json dump your list of dictionary