diff --git a/.gradle/8.11.1/fileHashes/fileHashes.bin b/.gradle/8.11.1/fileHashes/fileHashes.bin index 2c01edf..a5c20e2 100644 Binary files a/.gradle/8.11.1/fileHashes/fileHashes.bin and b/.gradle/8.11.1/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.11.1/fileHashes/fileHashes.lock b/.gradle/8.11.1/fileHashes/fileHashes.lock index 820f776..2ba246b 100644 Binary files a/.gradle/8.11.1/fileHashes/fileHashes.lock and b/.gradle/8.11.1/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.11.1/fileHashes/resourceHashesCache.bin b/.gradle/8.11.1/fileHashes/resourceHashesCache.bin index 7083d71..0ed72e1 100644 Binary files a/.gradle/8.11.1/fileHashes/resourceHashesCache.bin and b/.gradle/8.11.1/fileHashes/resourceHashesCache.bin differ diff --git a/lib/features/assessment/models/quiz_model.dart b/lib/features/assessment/models/quiz_model.dart index 4f0f10a..ba83ed8 100644 --- a/lib/features/assessment/models/quiz_model.dart +++ b/lib/features/assessment/models/quiz_model.dart @@ -36,22 +36,39 @@ class Quiz { +// [quiz_model.dart] 파일 내의 Quiz 클래스 수정 factory Quiz.fromJson(Map json) { - // API의 options는 Map이지만, 값은 String입니다. - final Map rawOptions = json['options'] ?? {}; - final Map parsedOptions = rawOptions.map( - (key, value) => MapEntry(key, value as String), - ); + // 1. API 응답의 options는 List (옵션 객체들의 배열)입니다. + final List rawOptions = json['options'] ?? []; + final Map parsedOptions = {}; + + // 2. List를 순회하며 Map 형태로 변환 + // 옵션 ID(int)를 키(String)로, 텍스트(String)를 값으로 사용합니다. + for (var option in rawOptions) { + if (option is Map) { + // 키로 사용할 옵션 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, + ); } + + } \ No newline at end of file