У меня есть файл JSON, который я скачал через API, и мне нужно извлечь из него определенные данные.Мне нужно извлечь только 12 из 32 доступных значений - некоторые из этих значений являются вложенными.Я считаю, что мне нужно создать своего рода «шаблон», пройтись по JSON, чтобы извлечь некоторые значения из вложенного массива, получить нужные элементы и создать загружаемый файл CSV с этими элементами.Я только балуюсь JS, и я ищу руководство, как я должен подходить к этому вопросу.Я уже пробовал papaparse, и я могу создать загружаемый CSV, но это плоский файл, и я не могу видеть вложенные массивы.Кроме того, я не могу правильно пометить некоторые уникальные поля (см. Ниже).
** Предостережение ** Один из массивов в объекте JSON имеет только идентификаторы для идентификации значения.Например, в CSV мне нужно иметь возможность сказать, что id 3800208 означает «цвет», что означает, что в CSV заголовок столбца должен сказать «Color» с соответствующим значением.В примере JSON вы увидите, что массив «bespoke_fields» содержит эти вложенные значения, которые я хочу.
Я действительно надеюсь, что кто-то подскажет мне лучший способ перебрать этот JSON и получить только данныеЯ хочу и создать CSV, который можно загрузить.Вот пример JSON.Мне нужно извлечь id, create_at, updated_at, subject, status, type, requestter_id, company_id, has_items и три значения из массива bespoke_fields и отобразить его в плоском 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.
Образец вывода SCV, который я ищу
Вот началоЯ пишу функцию, чтобы сопоставить идентификаторы полей JSON с реальными именами в заголовках CSV.Но я застреваю с логикой.
function appendData(requests) {
var fieldTypes = {
3600194: 'version',
3200192: 'request_type',
3300194: 'cause'
};