Kako deserializirati DICOM JSON povratak na Dataset ili DicomFile
Ovaj tutorial pokazuje kako deserializirati DICOM JSON nazad na Dataset ili DicomFile objekte pomoću C#. Ova je sposobnost neophodna kada trebate rekonstruirati podatke o DIKOM-u iz J SON-a pohranjene u bazama podataka ili primljene iz web APIs.
Prednosti JSON deserializiranja
• Obnova podataka:- Obnovite DICOM datoteke iz JSON pohranjene u bazama podataka.
• API integracija:- Procesiranje DICOM podataka primljenih kao JSON iz web usluga.
** Proizvodnja putovanja za putovanje:- Serializirajte se na JSON, izmijenite, a zatim deserializirati nazad na DICOM.
Predviđanja: Priprema za okoliš
- Sastavite Visual Studio ili bilo koji kompatibilni .NET IDE.
- Stvorite novi .NET 8 konzol aplikacijski projekt.
- Instalirajte Aspose.Medical iz upravitelja paketa NuGet.
Razumijevanje opcija deserializiranja
DicomJsonSerializer pruža različite metode deserifikacije:
| Method | Input | Izlazak | Koristite slučaj |
|---|---|---|---|
Deserialize | Sljedeći JSON string | Dataset? | Jedinstveni skup podataka od JSON-a |
DeserializeFile | Sljedeći JSON string | DicomFile? | Popunite DICOM datoteku s meta info |
DeserializeList | Sljedeći Članak JSON array string | Dataset[]? | Brojne zbirke podataka iz JSON array-a |
Korak po korak vodič za deserializiranje DICOM JSON
Korak 1: Instalirati Aspose.Medical
Dodajte Aspose.Medical knjižnicu u svoj projekt pomoću NuGeta.
Install-Package Aspose.MedicalKorak 2: Uključite potrebne nazivne prostore
Dodajte upute potrebnim nazivnim prostorima u vašem kodu.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;Korak 3: Pročitajte JSON sadržaj
Pročitajte JSON sadržaj iz datoteke ili promjenjive.
string jsonText = File.ReadAllText("patient_scan.json");Korak 4: Deserializirajte se na Dataset
Korištenje Deserialize Obavijest o obnovi objekta.
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);Korak 5: Radite s Datasetom
Pristup i manipulacija obnovljenim skupinama podataka.
if (dataset != null)
{
Console.WriteLine("Dataset successfully reconstructed from JSON.");
// Work with the dataset...
}Korak 6: Sačuvajte natrag na DICOM (opcionalno)
Stvorite novi DicomFile i sačuvajte na disku.
if (dataset != null)
{
DicomFile newDcm = new DicomFile(dataset);
newDcm.Save("reconstructed.dcm");
}Kompletni primjer koda: Deserializirajte jedinstvenu dataset
Ovdje je potpuni primjer koji pokazuje kako deserializirati pojedinačni skup podataka:
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.");
}Slijedeći članakDeserialize Complete DicomFile
Kada vaš JSON sadrži meta podatke datoteke, koristite 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");
}Deserializirajte JSON Array na više zbirki podataka
Kada radite s JSON-om, nalaze se koji sadrže više zbirki podataka:
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!");
}Primjer putovanja: Serializ, Modify, Deserialize
Jedan od najčešćih slučajeva korištenja je izmjena podataka DICOM-a kroz 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");
}Rad na skladištenju baze podataka
Deserialize DICOM JSON dobio iz baze podataka:
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 Deserialization za web aplikacije
Za aplikacije ASP.NET Core, koristite metode 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
Slijedeći Članak Zlostavljeni JSON
Uvijek uključite deserializiranje u try-catch blokove:
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}");
}Slijedeći Članak Truncated JSON
Za velike JSON datoteke, osigurajte da je cijeli sadržaj pročitan:
// 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.");
}Kompatibilnost verzije
Uvjerite se da je JSON generiran s kompatibilnom verzijom serializatora. pogrešne verzije mogu uzrokovati neuspjeh deserializiranja.
Dodatne informacije
- Deserializirani zbirci podataka ne uključuju pixel podatke osim ako su uvršteni u originalni JSON.
- Za proizvodnu upotrebu, provedite odgovarajuću validaciju JSON ulaza prije deserializiranja.
- Razmotrite caching deserializirane zbirke podataka za često pristupane podatke.
zaključak
Ovaj tutorial je pokazao kako deserializirati DICOM JSON nazad na Dataset ili DicomFile objekte u C# pomoću Aspose.Medical. Ova sposobnost omogućuje okruglo obrađivanje podataka i bezuvjetnu integraciju s sustavima skladištenja i API-a koji se temelje na jSON-u.