Miten deserialisoi DICOM JSON takaisin Dataset tai DicomFile
Tämä opetusohjelma osoittaa, miten deserialisoi DICOM JSON takaisin Dataset tai DicomFile-objekteihin C#: n avulla. Tämä kyky on välttämätöntä, kun sinun on rakennettava uudelleen DicOM-tiedot tietokannoissa tallennetuista tai verkkopalveluista saatuista API:istä.
JSON deserialisoitumisen hyödyt
- Tietojen uudelleenrakentaminen*- Palauta DICOM tiedostot JSON tallennettuja tietokantoja.
- Tietokoneiden integrointi*- Verkkopalveluista vastaanotetut DICOM-tiedot ovat JSON.
- Pyöreän kierroksen käsittely*- Serioi JSON, muokkaa ja deserialisoi sitten takaisin DICOMiin.
Edellytykset: Ympäristön valmistelu
- Aseta Visual Studio tai yhteensopiva .NET IDE.
- Luo uusi .NET 8 -konsolin sovellusprojekti.
- Asenna Aspose.Medical NuGet Package Managerista.
Ymmärtää deserialisoitumisvaihtoehtoja
DicomJsonSerializer tarjoaa erilaisia deserialisoitumismenetelmiä:
| Method | Input | Lähtö | Käytä tapausta |
|---|---|---|---|
Deserialize | JSON sarja | Dataset? | Yksittäinen tietokone JSON |
DeserializeFile | JSON sarja | DicomFile? | Täydellinen DICOM tiedosto meta info |
DeserializeList | JSON array sarja | Dataset[]? | Monenlaisia tietokoneita JSON Arrayista |
Vaiheittainen opas deserialisoi DICOM JSON
Vaihe 1: Asenna Aspose.Medical
Lisää Aspose.Medical -kirjasto projektillesi NuGetin avulla.
Install-Package Aspose.MedicalVaihe 2: Sisällytä tarvittavat nimet
Lisää viittauksia vaadittuihin nimipaikkoihin koodissasi.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;Vaihe 3: Lue JSON-sisältö
Lue JSON-sisältö tiedostosta tai muuttuvasta.
string jsonText = File.ReadAllText("patient_scan.json");Vaihe 4: Deserialisoi datasettiin
Käytä Deserialize Rekonstruoida tietokoneen objekti.
Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);Vaihe 5: Työskentele tietokannan kanssa
Tutustu ja manipuloi uudelleenrakennettua tietokantaa.
if (dataset != null)
{
Console.WriteLine("Dataset successfully reconstructed from JSON.");
// Work with the dataset...
}Vaihe 6: Tallenna takaisin DICOM (vaihtoehtoinen)
Luo uusi DicomFile ja tallenna levylle.
if (dataset != null)
{
DicomFile newDcm = new DicomFile(dataset);
newDcm.Save("reconstructed.dcm");
}Täydellinen koodin esimerkki: Deserialize yksittäinen dataset
Tässä on täydellinen esimerkki siitä, miten yksi tietokanta voidaan deserialisoida:
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.");
}Deserialize täydellinen DicomFile
Kun JSON sisältää tiedoston meta-tietoja, käytä 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");
}Deserialisoi JSON Array useisiin tietokoneisiin
Kun työskentelet JSON: n kanssa, se sisältää useita tietokoneita:
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 Esimerkki: Serialize, Modify, Deserialize
Yleinen tapaus on DICOM-tietojen muuttaminen JSON:n kautta:
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");
}Tietokannan tallentaminen
Deserialize DICOM JSON peräisin tietokannasta:
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 Web-sovelluksiin
ASP.NET Core -sovelluksissa käytä async-menetelmiä:
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
Haittavaikutukset JSON
Aina tyhjentää deserialisoitumista try-catch-blokkeissa:
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}");
}Käsittelyssä JSON
Suuriin JSON-tiedostoihin varmista, että täydellinen sisältö luetaan:
// 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.");
}Versio yhteensopivuus
Varmista, että JSON on luotu yhteensopivalla sarjakuvan versiolla. väärennettyjen versioiden voi aiheuttaa deserialisoitumisvirheitä.
Lisätietoja
- Deserialisoituneet tietokoneet eivät sisällä pixelitietoja, ellei ne ole sisällytetty alkuperäiseen JSON-tiedostoon.
- Tuotantokäyttöön toteutetaan asianmukainen validointi JSON-tulosta ennen deserialisointia.
- Harkitse deserialisoituneiden tietokoneiden kaappaamista usein käytettävissä oleviin tietoihin.
johtopäätöksiä
Tämä opetusohjelma on osoittanut, miten deserialisoi DICOM JSON takaisin Dataset tai DicomFile esineitä C#: ssä käyttämällä Aspose.Medical. Tämä kyky mahdollistaa ympyrä-tietojen käsittelyä ja ohuttomasti integroitua jSON-pohjaisten tallennus- ja API-järjestelmien kanssa.