Trochę mało responsywny ten Twój JSON trochę poprawiłem:
[
{
"name": "Kategoria1",
"question":
[
{
"description": "Treść pytania 1",
"answer":
[
"Odpowiedź A",
"Odpowiedź B",
"Odpowiedź C",
"Odpowiedź D"
]
},
{
"description": "Treść pytania 1",
"answer":
[
"Odpowiedź A",
"Odpowiedź B",
"Odpowiedź C",
"Odpowiedź D"
]
}
]
},
{
"name": "Kategoria2",
"question":
[
{
"description": "Treść pytania 1",
"answer":
[
"Odpowiedź A",
"Odpowiedź B",
"Odpowiedź C",
"Odpowiedź D"
]
},
{
"description": "Treść pytania 1",
"answer":
[
"Odpowiedź A",
"Odpowiedź B",
"Odpowiedź C",
"Odpowiedź D"
]
}
]
}
];
Dzięki zastosowaniu tablicy w przypadku kategorii można łatwo odnosić się do kategorii, zarówno po ID i jak i po nazwie dla wyszukania po nazwie napisałem prostą funkcję. I taką tablice na zamianę id odpowiedzi na literę.
function getQuizzCategoryByName(categoryName)
{
for(var index in quizz)
if(quizz[index].name == categoryName)
return quizz[index];
return null;
};
var answerIdToLetter = ["A", "B", "C", "D", "E", "F", "G"];
No i samo zastosowanie jest banalne:
var quizz;
$.getJSON("pytania.json", function(json) {
quizz = JSON.parse(json);
});
Choć ja polecam Ci po prostu dorzucić od razu pytania do JS jak za przy każdym załadowaniu strony będą wykorzystywane to bez sensu lądować kolejny riquest do serwera.
I tu masz kilka przykładów:
//Uzyskanie kategorii po ID
quizz[id_kategorii];
np. quizz[0];
//Uzyskanie kategorii po nazwie
//Jeśli jest null to nie znaleziono
getQuizzCategoryByName("nazwa_kategorii");
np. getQuizzCategoryByName("Kategoria1");
//Numeracje kategorii masz automatyczną od zera
//Sprawdzanie ilości kategorii
quizz.length
//W przypadku wyszukiwania kategorii po nazwie polecam zapisanie kategorii do zmiennej4
var znaleziona_kategoria = getQuizzCategoryByName("nazwa_kategorii");
//Możesz też tak ale nie polecam ponieważ wtedy wyszukuje Ci przy każdym wywołaniu.
getQuizzCategoryByName("nazwa_kategorii").question[id_pytania];
//Ale polecam tak
quizz[id_kategorii].question[id_pytania];
//Albo tak
znaleziona_kategoria.question[id_pytania];
//A tak dostajesz tresc
znaleziona_kategoria.question[id_pytania].description;
//A tak dostajesz ilosc pytan
quizz[id_kategorii].question.length
//Albo
znaleziona_kategoria.question.length
//A tak dostajesz możliwe odpowiedzi
quizz[id_kategorii].question[id_pytania].answer[id_odpowiedzi];
//A tak dostajesz ilosc możliwych odpowiedzi w danym pytaniu
znaleziona_kategoria.question[id_pytania].answer.length
//Zamiana ID odpowiedzi na literę:
answerIdToLetter[id_odpowiedzi];