Comment désertifier DICOM JSON Retour à Dataset ou DicomFile
Ce tutoriel démontre comment désérialiser DICOM JSON vers les objets Dataset ou DicomFile en utilisant C#. Cette capacité est essentielle lorsque vous avez besoin de reconstruire les données DicOM de jSON stockées dans les bases de données ou reçues des APIs Web.
Les avantages de la désertification JSON
- Récupération de données * :- Récupérer les fichiers DICOM de JSON stockés dans les bases de données.
- L’intégration API :- Traitement des données DICOM reçues en tant que JSON des services Web.
- Traitement de la route* :- Sérialiser à JSON, modifier, puis désertifier à DICOM.
Étiquette : Préparer l’environnement
- Configurez Visual Studio ou tout IDE .NET compatible.
- Créer un nouveau projet d’application pour la console .NET 8.
- Installez Aspose.Medical à partir du NuGet Package Manager.
Comprendre les options de désertification
Le DicomJsonSerializer fournit différentes méthodes de désertification:
| Metodo | Input | La sortie | Utiliser le cas |
|---|---|---|---|
Deserialize | Régime JSON | Dataset? | Unité de données JSON |
DeserializeFile | Régime JSON | DicomFile? | Complète le fichier DICOM avec meta info |
DeserializeList | JSON array string | Dataset[]? | Plusieurs données de JSON Array |
Guide pas à pas pour désertifier DICOM JSON
Étape 1 : Installer Aspose.Medical
Ajoutez la bibliothèque Aspose.Medical à votre projet en utilisant NuGet.
Install-Package Aspose.MedicalÉtape 2 : Inclure les espaces de nom nécessaires
Ajoutez des références aux espaces de nom requis dans votre code.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;Étape 3 : Lire le contenu JSON
Lire le contenu JSON à partir d’un fichier ou de la variable.
string jsonText = File.ReadAllText("patient_scan.json");Étape 4 : Desérialiser à Dataset
Utiliser Deserialize reconstruire un objet de Dataset.
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);Étape 5: Travailler avec le Dataset
Accès et manipulation des données reconstruites.
if (dataset != null)
{
Console.WriteLine("Dataset successfully reconstructed from JSON.");
// Work with the dataset...
}Étape 6 : Réservez à DICOM (optionnel)
Créer un nouveau DicomFile et sauvegarder sur le disque.
if (dataset != null)
{
DicomFile newDcm = new DicomFile(dataset);
newDcm.Save("reconstructed.dcm");
}Exemple de code complet: Desérialiser un ensemble de données unique
Voici un exemple complet démontrant comment désertifier un seul ensemble de données:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
// Read JSON from file
string jsonText = File.ReadAllText("patient_scan.json");
// Deserialize to Dataset
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);
if (dataset != null)
{
Console.WriteLine("Dataset successfully deserialized!");
// Create a new DicomFile with the dataset
DicomFile newDcm = new DicomFile(dataset);
// Save to DICOM format
newDcm.Save("reconstructed_scan.dcm");
Console.WriteLine("Saved to reconstructed_scan.dcm");
}
else
{
Console.WriteLine("Failed to deserialize JSON.");
}Découvrir Complete DicomFile
Lorsque votre JSON contient des données de fichiers, utilisez DeserializeFile:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
// Read JSON that includes file meta information
string jsonFileText = File.ReadAllText("complete_dicom.json");
// Deserialize to complete DicomFile
DicomFile? dicomFile = DicomJsonSerializer.DeserializeFile(jsonFileText);
if (dicomFile != null)
{
Console.WriteLine("DicomFile successfully deserialized!");
dicomFile.Save("reconstructed_complete.dcm");
}Désérialiser JSON Array à plusieurs données
Lorsque vous travaillez avec JSON, les rayons contiennent plusieurs ensembles de données :
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
// Read JSON array
string jsonArrayText = File.ReadAllText("multiple_studies.json");
// Deserialize to Dataset array
Dataset[]? datasets = DicomJsonSerializer.DeserializeList(jsonArrayText);
if (datasets != null)
{
Console.WriteLine($"Deserialized {datasets.Length} datasets.");
// Save each dataset as a separate DICOM file
for (int i = 0; i < datasets.Length; i++)
{
DicomFile dcm = new DicomFile(datasets[i]);
dcm.Save($"study_{i:D3}.dcm");
}
Console.WriteLine("All datasets saved successfully!");
}Exemple de tournée : sérialiser, modifier, désertifier
Un cas d’utilisation courant est de modifier les données DICOM via JSON:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json;
// Load original DICOM file
DicomFile original = DicomFile.Open("original.dcm");
// Serialize to JSON
string json = DicomJsonSerializer.Serialize(original, writeIndented: true);
// Parse JSON for modification (using System.Text.Json)
using JsonDocument doc = JsonDocument.Parse(json);
// ... modify JSON as needed ...
// Deserialize back to Dataset
Dataset? modifiedDataset = DicomJsonSerializer.Deserialize(json);
if (modifiedDataset != null)
{
DicomFile modifiedDcm = new DicomFile(modifiedDataset);
modifiedDcm.Save("modified.dcm");
}Travailler avec le stockage de base de données
Deserialiser DICOM JSON obtenu à partir d’une base de données :
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
// Simulating retrieval from database
string jsonFromDatabase = GetDicomJsonFromDatabase("patient_123");
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonFromDatabase);
if (dataset != null)
{
// Process the reconstructed dataset
DicomFile dcm = new DicomFile(dataset);
dcm.Save("from_database.dcm");
Console.WriteLine("DICOM file reconstructed from database JSON.");
}
// Simulated database retrieval method
string GetDicomJsonFromDatabase(string patientId)
{
// In real implementation, this would query your database
return File.ReadAllText($"database_cache/{patientId}.json");
}Async Deserialisation pour les applications Web
Pour les applications ASP.NET Core, utilisez les méthodes async :
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
// Async deserialization from stream
public async Task<Dataset?> DeserializeFromStreamAsync(Stream jsonStream)
{
Dataset? dataset = await DicomJsonSerializer.DeserializeAsync(jsonStream);
return dataset;
}
// Usage in ASP.NET Core controller
[HttpPost("import")]
public async Task<IActionResult> ImportDicomJson()
{
Dataset? dataset = await DicomJsonSerializer.DeserializeAsync(Request.Body);
if (dataset != null)
{
// Process the dataset
return Ok("DICOM data imported successfully");
}
return BadRequest("Invalid DICOM JSON");
}Troubleshooting
Traitement malformé JSON
Toujours enveloppez la désertification dans les blocs de tentative:
try
{
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);
if (dataset == null)
{
Console.WriteLine("Deserialization returned null - check JSON format.");
}
}
catch (JsonException ex)
{
Console.WriteLine($"JSON parsing error: {ex.Message}");
}
catch (Exception ex)
{
Console.WriteLine($"Deserialization error: {ex.Message}");
}Travailler avec JSON
Pour les grands fichiers JSON, assurez-vous que le contenu complet est lu :
// Use ReadAllText for complete file content
string completeJson = File.ReadAllText("large_dicom.json");
// Verify JSON is complete (basic check)
if (!completeJson.TrimEnd().EndsWith("}") && !completeJson.TrimEnd().EndsWith("]"))
{
Console.WriteLine("Warning: JSON may be truncated.");
}Version de compatibilité
Assurez-vous que le JSON a été généré avec une version compatible du sérialisateur. Les versions incorrectes peuvent causer des échecs de désérialisation.
Informations supplémentaires
- Les ensembles de données désérialisés ne comprennent pas les données pixel sauf si elles ont été intégrées dans le JSON original.
- Pour l’utilisation de la production, mettre en œuvre la validation appropriée des entrées JSON avant la désertification.
- Considérons le caching des données désérialisées pour les données fréquemment accessibles.
Conclusion
Ce tutoriel a démontré comment désérialiser DICOM JSON de retour à Dataset ou DicomFile objets en C# en utilisant Aspose.Medical. Cette capacité permet le traitement de données de circuit et l’intégration sans fil avec les systèmes de stockage et d’API basés sur jSON.