Kā deserializēt DICOM JSON atpakaļ uz Dataset vai DicomFile

Kā deserializēt DICOM JSON atpakaļ uz Dataset vai DicomFile

Šis apmācība parāda, kā deserializēt DICOM JSON atpakaļ uz Dataset vai DicomFile objektiem, izmantojot C#. Šī spēja ir svarīga, kad jums ir nepieciešams, lai pārstrukturētu DIKOM datus no jSON, kas glabāti datu bāzēs vai saņemti no tīmekļa APIs.

JSON deserializācijas priekšrocības

    • datu atjaunošana *:- Atjaunojiet DICOM failus no JSON, kas glabāti datu bāzēs.
  • • API integrācija:- Process DICOM dati, kas saņemti kā JSON no tīmekļa pakalpojumiem.

  • Rund-Trip apstrāde- Serializēt uz JSON, modificēt, pēc tam deserializēties atpakaļ uz DICOM.

Priekšnoteikumi: Vides sagatavošana

  • Iestatīt Visual Studio vai jebkuru saderīgu .NET IDE.
  • Izveidojiet jaunu .NET 8 konsoles lietojumprogrammu projektu.
  • Instalējiet Aspose.Medical no NuGet Package Manager.

Izpratne par deserializācijas iespējām

DicomJsonSerializer nodrošina dažādas deseralizācijas metodes:

MethodInputOutputIzmanto gadījumu
DeserializeJSON strīdsDataset?Datu komplekts no JSON
DeserializeFileJSON strīdsDicomFile?Pilnīgs DICOM fails ar meta info
DeserializeListJSON array strīdsDataset[]?Daudzveidīgas datu kopas no JSON array

Pakāpeniski ceļvedis, lai deserializētu DICOM JSON

1. solis: instalēt Aspose.Medical

Pievienojiet Aspose.Medicīnas bibliotēku savam projektam, izmantojot NuGet.

Install-Package Aspose.Medical

2. solis: Iekļaut nepieciešamos nosaukuma telpas

Pievienojiet atsauces uz pieprasītajiem nosaukuma telpām savā kodā.

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;

3. solis: Lasīt JSON saturu

Izlasiet JSON saturu no faila vai mainīgā.

string jsonText = File.ReadAllText("patient_scan.json");

4. solis: Deserializēt uz dataset

Use Deserialize Atkārtoti izveidot dataset objektu.

Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

5. solis: Darbs ar dataset

Iegūstiet un manipulējiet rekonstruēto datu kopumu.

if (dataset != null)
{
    Console.WriteLine("Dataset successfully reconstructed from JSON.");
    // Work with the dataset...
}

6. solis: ietaupīt atpakaļ uz DICOM (atļauts)

Izveidojiet jaunu DicomFile un saglabājiet to uz disku.

if (dataset != null)
{
    DicomFile newDcm = new DicomFile(dataset);
    newDcm.Save("reconstructed.dcm");
}

Kompletā koda piemērs: Deserializēt vienotu dataset

Šeit ir pilns piemērs, kas parāda, kā deserializēt vienu datu kopumu:

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.");
}

Deserializēt Complete DicomFile

Ja jūsu JSON satur failu meta informāciju, izmantojiet 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");
}

Deserializēt JSON Array uz vairākiem datu komplektiem

Darbojoties ar JSON, rokas satur vairākus datasetus:

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 piemērs: serializācija, modificēšana, deserializēšana

Visbiežāk sastopamais lietojuma gadījums ir DICOM datu modificēšana, izmantojot 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");
}

Darbs ar datu bāzes uzglabāšanu

Deserialize DICOM JSON iegūts no datu bāzes:

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 deserializācija tīmekļa lietojumprogrammām

ASP.NET Core lietojumprogrammās izmantojiet async metodes:

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

Darbība ar ļaunprātīgu JSON

Vienmēr ievieto deserializāciju tri-catch bloks:

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}");
}

Darbība ar truncated JSON

Lieliem JSON failiem, pārliecinieties, ka pilns saturs tiek lasīts:

// 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.");
}

Versijas saderība

Pārliecinieties, ka JSON ir radīts ar saderīgu serializatoru versiju. nepareizas versijas var izraisīt deserializācijas neveiksmes.

Papildu informācija

  • Deserializētie datu kompleksi nesatur pikseļu datus, ja vien tie nav iebūvēti oriģinālā JSON.
  • Ražošanas lietošanai pirms deserializācijas jāveic atbilstoša JSON ieejas validācija.
  • Apsveriet caching deserializētus datasetus biežāk pieejamajiem datiem.

Conclusion

Šī apmācība ir parādījusi, kā deserializēt DICOM JSON atpakaļ Dataset vai DicomFile objektiem C#, izmantojot Aspose.Medical. Šī iespēja ļauj apkārtējai apstrādei DIKOM datiem un bezvadu integrāciju ar jSON bāzes glabāšanas un API sistēmām.

 Latviski