Hvordan å deserialisere DICOM JSON tilbake til Dataset eller DicomFile
Denne veiledningen viser hvordan du deserialiserer DICOM JSON tilbake til Dataset eller DicomFile gjenstander ved hjelp av C#. Denne evnen er viktig når du trenger å rekonstruere DIKOM data fra jSON lagret i databaser eller mottatt fra web APIs.
Fordelene med JSON Deserialisering
Data gjenoppbygging:- Gjenopprette DICOM-filer fra JSON lagret i databaser.
• API integrasjon:- Prosess DICOM data mottatt som JSON fra webtjenester.
**Rund-Trip prosessering av *:- Serialiser til JSON, modifiser, deretter deserialiserer tilbake til DICOM.
Forutsetninger: Å forberede miljøet
- Installer Visual Studio eller noe kompatibelt .NET IDE.
- Skap et nytt .NET 8 konsolapplikasjon prosjekt.
- Installere Aspose.Medical fra NuGet Package Manager.
Forstå deserialiseringsalternativer
DicomJsonSerializer gir ulike deserialiseringsmetoder:
| Method | Input | Output | Bruker tilfelle |
|---|---|---|---|
Deserialize | JSON String | Dataset? | Enkel datasett fra JSON |
DeserializeFile | JSON String | DicomFile? | Komplett DICOM fil med meta info |
DeserializeList | JSON array strenger | Dataset[]? | Flere datasett fra JSON array |
Step-by-step guide for å deserialisere DICOM JSON
Steg 1: Installere Aspose.Medical
Legg til Aspose.Medical Library til prosjektet ditt ved hjelp av NuGet.
Install-Package Aspose.MedicalSteg 2: Inkludere nødvendige navnområder
Legg til referanser til de nødvendige navnene i koden din.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;Trinn 3: Les JSON innhold
Les JSON-innholdet fra en fil eller variabel.
string jsonText = File.ReadAllText("patient_scan.json");Steg 4: Deserialisere til Dataset
Use Deserialize Å gjenopprette et datasettobjekt.
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);Steg 5: Arbeid med datasettet
Få tilgang til og manipulere den rekonstruerte datasettet.
if (dataset != null)
{
Console.WriteLine("Dataset successfully reconstructed from JSON.");
// Work with the dataset...
}Steg 6: Spar tilbake til DICOM (alternativt)
Skap en ny DicomFile og lagre til disken.
if (dataset != null)
{
DicomFile newDcm = new DicomFile(dataset);
newDcm.Save("reconstructed.dcm");
}Komplett kode Eksempel: Deserialize Single Dataset
Her er et komplett eksempel som viser hvordan å deserialisere en enkelt datasett:
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.");
}Deserialisere Complete DicomFile
Når JSON-filen inneholder metainformasjon, bruk 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");
}Deserialisere JSON Array til flere datasett
Når du jobber med JSON, er det arrayer som inneholder flere datasett:
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!");
}Round-Trip Eksempel: Serialize, Modify, Deserialize
En vanlig brukssituasjon er å endre DICOM-data gjennom 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");
}Arbeid med databaseslagring
Deserialize DICOM JSON hentet fra en database:
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 Deserialisering for webapplikasjoner
For ASP.NET Core applikasjoner, bruk async metoder:
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
Behandling av forstyrret JSON
Alltid vekk deserialisering i try-catch blokker:
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}");
}Håndtering av Truncated JSON
For store JSON-filer, sørg for at fullstendig innhold blir lest:
// 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.");
}Versjonskompatibilitet
Sørg for at JSON ble generert med en kompatibel versjon av serialiseren. feilaktige versjoner kan forårsake deserialiseringsfeil.
Ytterligere informasjon
- Deserialiserte datasett inneholder ikke pixeldata med mindre det er innebygd i den opprinnelige JSON.
- For produksjonsbruk, implementere riktig validering av JSON input før deserialisering.
- Tenk på caching deserialiserte datasett for hyppig tilgjengelige data.
Conclusion
Denne veiledningen har vist hvordan å deserialisere DICOM JSON tilbake til Dataset eller DicomFile gjenstander i C# ved hjelp av Aspose.Medical. Denne evnen gjør det mulig å bearbeide dicom data på runde veier og seamless integrasjon med jSON-baserte lagring og API-systemer.