Building blocks

Using quotation marks

Problem: You’re not sure if something you’ve typed should be in quotation marks.

Solution: It probably should be. Everything except for numbers and boolean values (true or false) should be surrounded by quotes.

Here are some correct uses of quote placement.

"type" = "image"
"duration" = 10
"feedback" = true

Listing multiple items (e.g., stimuli, trial templates)

Problem: You’d like to include multiple items (e.g., stimuli, trial templates, blocks) within a property.

Solution: Easy - place these items in a list separated by commas , and enclosed with square brackets [].

For example, you may want to include multiple stimuli within a trial_template

"stimuli": ["S1", "S2", "S3"]

Or maybe you want to display multiple choices for participants

"choice": ["YES", "NO", "MAYBE"]

Dictionaries (sets of property-value pairs)

Problem: You have multiple property-value pairs defining an overarching property.

Solution: Create a dictionary by enclosing the set of property-value pairs in curly brackets {} and separating the individual property-value pairs with commas ,.

Here we define a trial_template named “TT1” to present basic instructions to participants with a dictionary.

"TT1": {
    "type": "instruction",
    "stimuli": ["IntroInst"],
    "duration": 10
}

This dictionary has three property-value pairs that define this trial template. The entire dictionary (denoted by the curly braces) is actually the value of the property “TT1”.

You’ll notice that your entire FindingFive experiment is just one big dictionary encompassing other dictionaries! Here’s the skeleton of study so you can see how that works.

{
    "stimuli": {
        // define stimuli here
    },
    "responses": {
        // define responses here
    },
    "trial_templates": {
        // define how stimuli and responses comprise different trials
    },
    "procedure": {
        // define how trials are organized into blocks
    }
}

Note that each of the top-level properties stimuli, responses, trial_templates, and procedure) is another dictionary!

The nested dictionaries don’t end there - each individual response you define, for instance, is another dictionary.

"response1FB": {
    "type": "choice",
    "choices": ["Correct", "Wrong"],
    "feedback": true
}