从CSV的嵌套JSON中提取数据

时间:2019-06-18 15:49:31

标签: javascript json csv xlsx

我有一个通过API下载的JSON文件,我需要从中提取特定数据。我只需要提取32个可用值中的12个-其中一些值是嵌套的。我相信我需要创建一个排序的“模板”,遍历JSON,以便从嵌套数组中提取一些值,获取我想要的项目,并使用这些项目创建可下载的CSV。我只是涉足JS,我正在寻找有关如何解决此问题的指南。我已经尝试过papaparse,并且能够创建可下载的CSV,但是它是一个平面文件,无法查看嵌套数组。另外,我无法正确标记一些唯一字段(请参见下文)。

**警告** JSON对象中的数组之一只有ID来标识值。例如,在CSV中,我必须能够说出ID 3800208的意思是“颜色”-这意味着,在CSV中,列标题需要用相应的值说“颜色”。您会在JSON示例中看到“ bespoke_fields”数组包含我想要的这些嵌套值。

我真的希望有人可以告诉我最好的方法来遍历此JSON,并仅获取所需的数据并创建可下载的CSV。这是一些示例JSON。我需要从“ bespoke_fields”数组中提取ID,created_at,updated_at,主题,状态,类型,requester_id,company_id,has_items和三个值,并将其以纯CSV显示。

"referrals": [
        {
            "url": "https://api.website.com/my.json",
            "id": 23487,
            "created_at": "2019-05-09T15:06:47Z",
            "updated_at": "2019-05-14T18:12:04Z",
            "type": "request",
            "subject": "Cum ceteris in veneratione tui montes, nascetur mus.",
            "description": "Fabio vel iudice vincam, sunt in culpa qui officia.",
            "priority": "low",
            "status": "new",
            "recipient": null,
            "requester_id": 142,
            "submitter_id": 142,
            "assignee_id": null,
            "company_id": 5498,
            "group_id": 3548,
            "co_ids": [],
            "follow_ids": [],
            "email_cc_ids": [],
            "forum_topic_id": null,
            "issue_id": null,
            "has_items": false,
            "is_public": true,
            "deadline_at": null,
            "tags": [
                "fix",
                "this",
                "now"
            ],
            "bespoke_fields": [
                {
                    "id": 3800208,
                    "value": null
                },
                {
                    "id": 3600194,
                    "value": "bluesteel"
                },
                {
                    "id": 3700205,
                    "value": null
                },
                {
                    "id": 3100209,
                    "value": null
                },
                {
                    "id": 3200192,
                    "value": "fix-needed"
                },
                {
                    "id": 3300194,
                    "value": "mistakes"
                }
            ],
            "return_ids": [],
            "identifier_id": 5482,
            "customer_identifier": 5688,
            "user_track": null,
            "allow_files": true
        },

这是当前的实现...我包括了papaparse库,并将其添加到我的页面中,其中“ requestData”是我的JSON变量:

function downloadCSV() {

    var csv = Papa.unparse(requestData);

    var csvData = new Blob([csv], {type: 'text/csv;charset=utf-8;'});
    var csvURL;
        csvURL = window.URL.createObjectURL(csvData);

    var referralLink = document.createElement('a');
        referralLink.href = csvURL;
        referralLink.setAttribute('download', 'downloadable.csv');
        referralLink.click();
}

我想获得一个CSV,其中包含我提到的那12列以及JSON对象中的相应数据。

Sample SCV Output I'm looking for

这是我正在编写的函数的开头,该函数将JSON字段ID与实际名称匹配以放入CSV标头中。但是,我陷入了逻辑。

    function appendData(requests) {
        var fieldTypes = {
            3600194: 'version',
            3200192: 'request_type',
            3300194: 'cause'
        };

0 个答案:

没有答案