Miten deserialisoi DICOM JSON takaisin Dataset tai DicomFile

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ä:

MethodInputLähtöKäytä tapausta
DeserializeJSON sarjaDataset?Yksittäinen tietokone JSON
DeserializeFileJSON sarjaDicomFile?Täydellinen DICOM tiedosto meta info
DeserializeListJSON array sarjaDataset[]?Monenlaisia tietokoneita JSON Arrayista

Vaiheittainen opas deserialisoi DICOM JSON

Vaihe 1: Asenna Aspose.Medical

Lisää Aspose.Medical -kirjasto projektillesi NuGetin avulla.

Install-Package Aspose.Medical

Vaihe 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.

 Suomi