You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.2 KiB
Dart
74 lines
2.2 KiB
Dart
|
1 month ago
|
import 'dart:convert';
|
||
|
|
import 'dart:io';
|
||
|
|
|
||
|
|
void main() async {
|
||
|
|
final file = File('assets/json/body_symptoms_data.json');
|
||
|
|
final content = await file.readAsString();
|
||
|
|
|
||
|
|
print('File size: ${content.length} characters');
|
||
|
|
|
||
|
|
// Split into two parts
|
||
|
|
final parts = content.split('export const SymptomsData = [');
|
||
|
|
if (parts.length != 2) {
|
||
|
|
print('ERROR: Could not split file properly');
|
||
|
|
exit(1);
|
||
|
|
}
|
||
|
|
|
||
|
|
print('Split into ${parts.length} parts');
|
||
|
|
|
||
|
|
// Process BodySymptomsData
|
||
|
|
var bodyPart = parts[0]
|
||
|
|
.replaceAll('export const BodySymptomsData = ', '')
|
||
|
|
.trim()
|
||
|
|
.replaceAll(RegExp(r';$'), '');
|
||
|
|
|
||
|
|
print('Parsing body symptoms...');
|
||
|
|
Map<String, dynamic> bodySymptomsData;
|
||
|
|
try {
|
||
|
|
bodySymptomsData = json.decode(bodyPart);
|
||
|
|
print('✅ Body symptoms parsed: ${bodySymptomsData.length} body parts');
|
||
|
|
} catch (e) {
|
||
|
|
print('❌ Error parsing body symptoms: $e');
|
||
|
|
exit(1);
|
||
|
|
}
|
||
|
|
|
||
|
|
// Process SymptomsData
|
||
|
|
print('Processing symptoms data...');
|
||
|
|
var symptomsPart = parts[1]
|
||
|
|
.trim()
|
||
|
|
.replaceAll(RegExp(r'\];$'), '')
|
||
|
|
.replaceAllMapped(RegExp(r'\n(\s*)id:'), (m) => '\n${m.group(1)}"id":')
|
||
|
|
.replaceAllMapped(RegExp(r'\n(\s*)type:'), (m) => '\n${m.group(1)}"type":')
|
||
|
|
.replaceAllMapped(RegExp(r'\n(\s*)name:'), (m) => '\n${m.group(1)}"name":')
|
||
|
|
.replaceAllMapped(RegExp(r'\n(\s*)common_name:'), (m) => '\n${m.group(1)}"common_name":');
|
||
|
|
|
||
|
|
print('Parsing symptoms...');
|
||
|
|
List<dynamic> symptomsData;
|
||
|
|
try {
|
||
|
|
symptomsData = json.decode('[$symptomsPart]');
|
||
|
|
print('✅ Symptoms parsed: ${symptomsData.length} symptoms');
|
||
|
|
} catch (e) {
|
||
|
|
print('❌ Error parsing symptoms: $e');
|
||
|
|
print('First 1000 chars:');
|
||
|
|
print('[$symptomsPart]'.substring(0, 1000));
|
||
|
|
exit(1);
|
||
|
|
}
|
||
|
|
|
||
|
|
// Create final JSON
|
||
|
|
print('Creating final JSON structure...');
|
||
|
|
final jsonStructure = {
|
||
|
|
'bodySymptoms': bodySymptomsData,
|
||
|
|
'symptoms': symptomsData,
|
||
|
|
};
|
||
|
|
|
||
|
|
// Write to file
|
||
|
|
print('Writing to file...');
|
||
|
|
final encoder = JsonEncoder.withIndent(' ');
|
||
|
|
await file.writeAsString(encoder.convert(jsonStructure));
|
||
|
|
|
||
|
|
print('\n✅ SUCCESS! File converted to proper JSON');
|
||
|
|
print('✅ Body parts: ${bodySymptomsData.length}');
|
||
|
|
print('✅ Symptoms: ${symptomsData.length}');
|
||
|
|
}
|
||
|
|
|