如何从数据库读取数据并生成符合指定结构的测验JSON
在线测验JSON格式输出实现方案
数据库表设计
先设计两个关联表存储测验数据:
- 问题表(quiz_questions)核心字段:
question_id:主键,自增整型,对应输出的question_idquestion:题干文本内容correct:正确选项的id,对应输出的correct字段
- 选项表(quiz_answers)核心字段:
id:选项主键,自增整型,对应输出的选项idquestion_id:外键,关联所属问题的idtype:枚举值,text / image,标记选项类型value:存储选项内容,文本类型存内容,图片类型存图片路径
代码实现逻辑(以Node.js + MySQL为例,其他语言逻辑一致)
const mysql = require('mysql2/promise'); async function getQuizData() { // 1. 建立数据库连接 const conn = await mysql.createConnection({ host: 'localhost', user: 'your_user', password: 'your_pwd', database: 'your_db' }); // 2. 查询所有问题 const [questions] = await conn.execute('SELECT * FROM quiz_questions'); // 3. 遍历问题组装对应选项 const quizData = []; for (const q of questions) { const [answers] = await conn.execute('SELECT * FROM quiz_answers WHERE question_id = ?', [q.question_id]); const formattedAnswers = answers.map(ans => { return ans.type === 'text' ? {id: ans.id, text: ans.value} : {id: ans.id, image: ans.value} }); quizData.push({ question_id: q.question_id, question: q.question, answers: formattedAnswers, correct: q.correct }) } await conn.end(); // 4. 输出JSON return JSON.stringify(quizData, null, 2); }
效果验证
执行函数后输出的JSON结构和要求的示例完全匹配,文本题和图片题会自动适配不同的选项字段。
参考示意图:
内容的提问来源于stack exchange,提问作者The House
相关产品推荐
相关产品推荐

