Kako deserializirati DICOM JSON povratak na Dataset ili DicomFile

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:

MethodInputIzlazakKoristite slučaj
DeserializeSljedeći JSON stringDataset?Jedinstveni skup podataka od JSON-a
DeserializeFileSljedeći JSON stringDicomFile?Popunite DICOM datoteku s meta info
DeserializeListSljedeći Članak JSON array stringDataset[]?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.Medical

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

 Hrvatski