Редактирование 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, время: 03:15. |