Редактирование JSON файла
Я сделал таблицу в Excel и конвентировал ее в JSON, и у меня получилось вот так:
[ { "QUESTION": "61771", "ANSWERS": "2772718", "CORRECT": "1,2,3,4" }, { "ANSWERS": "7271717" }, { "ANSWERS": "272727" }, { "ANSWERS": "6271717" }, { "QUESTION": "716171781", "ANSWERS": "6171717", "CORRECT": "1,2" }, { "ANSWERS": "7171616" }, { "ANSWERS": "287272" } ] Возможно ли сделать примерно вот так? Чтоб все "ANSWERS", которые ниже "QUESTION" входили в состав одного "ANSWERS". [ { "QUESTION": "61771", "ANSWERS": ["2772718 ", "7271717", "272727", "6271717"], "CORRECT": [1,2,3,4] }, { "QUESTION": "716171781", "ANSWERS": ["6171717", "7171616", "287272"], "CORRECT": [1,2] }, ] Если потребуется, я могу скинуть весь JSON файл (около 1000 вопросов) |
<!DOCTYPE html> <htmll lang="ru"> <head> <title>Untitled</title> <meta charset="utf-8"> </style> </style> </head> <body> <textarea id=ijs rows=15 cols=40 placeholder="Copy your JSON here"></textarea> <br><br> <button id=bt>Correct JSON</button> </body> <script> const correctJson = (ojso) =>{ const njso = []; let tmpo = null; for (let ob of ojso) { if ('QUESTION' in ob) { if (tmpo) njso.push(tmpo); tmpo = {QUESTION: ob.QUESTION, ANSWERS:[ob.ANSWERS], CORRECT:ob.CORRECT.split(',').map(v => +v)} } else { tmpo.ANSWERS.push(ob.ANSWERS) } } if (tmpo) njso.push(tmpo); return njso; } document.getElementById('bt').addEventListener('click', () => { const oldJson = JSON.parse(document.getElementById('ijs').value) document.getElementById('ijs').value = JSON.stringify(correctJson(oldJson)) }) </script> </html> |
maplol123@gmail.com,
<script> const data = [{ "QUESTION": "61771", "ANSWERS": "2772718", "CORRECT": "1,2,3,4" }, { "ANSWERS": "7271717" }, { "ANSWERS": "272727" }, { "ANSWERS": "6271717" }, { "QUESTION": "716171781", "ANSWERS": "6171717", "CORRECT": "1,2" }, { "ANSWERS": "7171616" }, { "ANSWERS": "287272" } ] const createData = data => { let totall = [], ar = []; for (let {QUESTION, ANSWERS, CORRECT} of data) { if (QUESTION) { ar = ANSWERS = [ANSWERS]; CORRECT = CORRECT.split(/\D+/).map(a => Number(a)); totall.push({QUESTION, ANSWERS, CORRECT}) } else ar.push(ANSWERS) } return totall } document.write(JSON.stringify(createData(data))) </script> |
рони, voraa, спасибо большое, очень-преочень выручили!
|
Часовой пояс GMT +3, время: 00:43. |