繁体   English   中英

Python:将带有额外数据错误的 json 转换为 CSV

[英]Python: Convert json with extra data error into CSV

我有一个 JSON 格式如下,我从另一个团队收到,并且不允许对其进行任何更改:

{
    "content": [
        {
            "id": "5603bbaae412390b73f0c7f",
            "name": "ABC",
            "description": "Test",
            "rsid": "pwcs",
            "type": "project",
            "owner": {
                "id": 529932
            },
            "created": "2015-09-24T09:00:26Z"
        },
        {
            "id": "56094673e4b0a7e17e310b83",
            "name": "secores",
            "description": "Panel",
            "rsid": "pwce",
            "type": "project",
            "owner": {
                "id": 520902
            },
            "created": "2015-09-28T13:53:55Z"
        }
    ],
    "totalPages": 9,
    "totalElements": 8592,
    "number": 0,
    "numberOfElements": 1000,
    "firstPage": true,
    "lastPage": false,
    "sort": null,
    "size": 1000
}
{
    "content": [
        {
            "id": "5bf2cc64d977553780706050",
            "name": "Services Report",
            "description": "",
            "rsid": "pcie",
            "type": "project",
            "owner": {
                "id": 518013
            },
            "created": "2018-11-19T14:44:52Z"
        },
        {
            "id": "5bf2d56e40b39312e3e167d0",
            "name": "Standard form",
            "description": "",
            "rsid": "wcu",
            "type": "project",
            "owner": {
                "id": 521114
            },
            "created": "2018-11-19T15:23:26Z"
        }
    ],
    "totalPages": 9,
    "totalElements": 8592,
    "number": 1,
    "numberOfElements": 1000,
    "firstPage": false,
    "lastPage": false,
    "sort": null,
    "size": 1000
}
{
    "content": [
        {
            "id": "5d95e7d6187c6d6376fd1bad",
            "name": "New Project",
            "description": "",
            "rsid": "pcinforrod",
            "type": "project",
            "owner": {
                "id": 200904228
            },
            "created": "2019-10-03T12:21:42Z"
        },
        {
            "id": "5d95fc6e56d2e82519629b96",
            "name": "Demo - 10/03",
            "description": "",
            "rsid": "sitedev",
            "type": "project",
            "owner": {
                "id": 20001494
            },
            "created": "2019-10-03T13:49:34Z"
        }
    ],
    "totalPages": 9,
    "totalElements": 8592,
    "number": 2,
    "numberOfElements": 1000,
    "firstPage": false,
    "lastPage": false,
    "sort": null,
    "size": 1000
}

我正在尝试使用以下代码将其转换为 CSV:

import csv
import json
with open("C:\python\SampleJSON.json",'rb') as file:
    data = json.load(file)

fname = "workspaceExcelDemo.csv"

with open(fname,"w", encoding="utf-8", newline='') as file:
    csv_file = csv.writer(file)
    csv_file.writerow(["id","name","rsid"])
    for item in data["content"]:
        csv_file.writerow([item['id'],item['name'],item['rsid']])

但是,在执行上述代码时,我收到以下错误消息:

raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 35 column 1 (char 937)

如何在不对 JSON 文件进行任何更改的情况下将上述 JSON 转换为 CSV ?

如果我理解您的问题和评论,您可以使用json.dumps方法:

import csv
import json

with open("C:\python\SampleJSON.json",'rb') as file:
    data = json.load(file)

"""

The json.dumps method converts a Python object to a JSON formatted string.

The json.loads method parses a JSON string into a native Python object.

Replacing the "=" character with an empty string.

"""
data = json.loads(json.dumps(data).replace("=", ""))

fname = "workspaceExcelDemo.csv"

with open(fname, "w", encoding="utf-8", newline='') as file:
    csv_file = csv.writer(file)
    csv_file.writerow(["id", "name", "rsid"])
    for item in data["content"]:
        csv_file.writerow([item['id'], item['name'], item['rsid']])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM