Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .gradle/8.11.1/fileHashes/fileHashes.bin
Binary file not shown.
Binary file modified .gradle/8.11.1/fileHashes/fileHashes.lock
Binary file not shown.
Binary file modified .gradle/8.11.1/fileHashes/resourceHashesCache.bin
Binary file not shown.
29 changes: 23 additions & 6 deletions lib/features/assessment/models/quiz_model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -36,22 +36,39 @@ class Quiz {



// [quiz_model.dart] 파일 내의 Quiz 클래스 수정
factory Quiz.fromJson(Map<String, dynamic> json) {
// API의 options는 Map<String, dynamic>이지만, 값은 String입니다.
final Map<String, dynamic> rawOptions = json['options'] ?? {};
final Map<String, String> parsedOptions = rawOptions.map(
(key, value) => MapEntry(key, value as String),
);
// 1. API 응답의 options는 List<dynamic> (옵션 객체들의 배열)입니다.
final List<dynamic> rawOptions = json['options'] ?? [];
final Map<String, String> parsedOptions = {};

// 2. List를 순회하며 Map<String, String> 형태로 변환
// 옵션 ID(int)를 키(String)로, 텍스트(String)를 값으로 사용합니다.
for (var option in rawOptions) {
if (option is Map<String, dynamic>) {
// 키로 사용할 옵션 ID를 문자열로 변환합니다. (예: 4001 -> "4001")
final String key = (option['optionId'] as int?)?.toString() ?? 'unknown';
final String text = option['text'] as String? ?? 'No Text';

// 키가 'unknown'이 아니면서 텍스트가 있을 경우에만 추가합니다.
if (key != 'unknown') {
parsedOptions[key] = text;
}
}
}

return Quiz(
id: json['questionId'] as int? ?? 0,
question: json['questionText'] as String? ?? 'No Question',
options: parsedOptions,
options: parsedOptions, // 👈 수정된 Map 사용
// ⬇ 새 API 명세에 없는 필드들은 기본값으로 채웁니다.
answer: '',
categoryId: 0,
level: 'UNKNOWN',
point: 0,

);
}


}