diff --git a/app/controllers/questionnaire.php b/app/controllers/questionnaire.php
index 66a4e0b6ad58c3fbc76bc063f41b7e49adc5c7c9..d0766ed132dd2e602fb12423e17606e9ec16323d 100644
--- a/app/controllers/questionnaire.php
+++ b/app/controllers/questionnaire.php
@@ -148,7 +148,7 @@ class QuestionnaireController extends AuthenticatedController
             : null;
 
         $this->questionnaire['user_id'] = User::findCurrent()->id;
-        $questions_data = Request::getArray('questions_data');
+        $questions_data = json_decode(Request::get('questions_data'), true);
         $questions = [];
         foreach ($questions_data as $index => $question_data) {
             $class = $question_data['questiontype'];
diff --git a/db/migrations/5.3.23_fix_questionnaire_questiondata.php b/db/migrations/5.3.23_fix_questionnaire_questiondata.php
new file mode 100644
index 0000000000000000000000000000000000000000..be115fc0a924ab91e1eff272933dddf08f56f6c5
--- /dev/null
+++ b/db/migrations/5.3.23_fix_questionnaire_questiondata.php
@@ -0,0 +1,18 @@
+<?php
+
+class FixQuestionnaireQuestiondata extends Migration
+{
+    public function description()
+    {
+        return 'fix invalid boolean values in questionnaire_questions';
+    }
+
+    public function up()
+    {
+        DBManager::get()->exec("
+            UPDATE questionnaire_questions
+            SET questiondata = REPLACE(questiondata, ':\"false\"', ':false')
+            WHERE questiondata LIKE '%:\"false\"%'
+        ");
+    }
+}
diff --git a/resources/assets/javascripts/lib/questionnaire.js b/resources/assets/javascripts/lib/questionnaire.js
index 2bca8c628aa1c0b42ccf6f1d3cfdf93c670afe14..08d3a7565d7292877daf7a2c4c74d76b4ebb6538 100644
--- a/resources/assets/javascripts/lib/questionnaire.js
+++ b/resources/assets/javascripts/lib/questionnaire.js
@@ -86,7 +86,7 @@ const Questionnaire = {
                             }
                             $.post(STUDIP.URLHelper.getURL('dispatch.php/questionnaire/store/' + (this.data.id || '')), {
                                 questionnaire: data,
-                                questions_data: questions,
+                                questions_data: JSON.stringify(questions),
                                 range_type: this.range_type,
                                 range_id: this.range_id
                             }).done(() => {