Wikisoba project/JSON specification for version 2
This is the working page for designing the JSON specification for Wikisoba Mark II.
Working assumption
The JSON for any one "slide" (adopting the term in Mark I) reads as
[configuration array, data array]
The configuration array starts by giving the "slide type", which would be 1 for questions, out of about five types in all, the other types being ways of including supporting material. The array will have about a dozen items, including some the legacy of Moodle export as in the JSON-GIFT sample.
Choice-cloze type
This is to be a versatile question type, including a number of typical multiple choice and missing text (cloze) formats. Its data array will look like
[S-array, T-array]
Here the S-array will be
[S(1), S(2), ..., S(N + 1)]
and the S(i) will be strings, possibly null, subject to JSON constraints[1] and the constraint that S(N + 1) is either null or ends in a terminating punctuation mark.[2]
The T-array will be
[T(1), T(2), ..., T(M)]
Example would be the case M = N, each T(j) is a single word, and the piece of text to reconstruct reads S(1) T(1) S(2) T(2) ... S(N) T(N) S(N + 1). Then the software should display boxes between the S(i), display the words T(j) below in a random order, and the user is supposed to drag the words into the boxes.
In general T(j) will be an array
[T(j) strings, T(j) annotations]
Here
T(j) strings
is an object, consisting of strings each of which is an acceptable answer in the place between S(j) and S(j + 1).
T(j) annotations
has to carry the other information in the question, namely any dummy answers<re>I.e. false answers, in multiple choice terms.</ref>, custom hints, responses, special reset information, special scoring information.