Kaip dezerializuoti DICOM JSON Grįžti į Dataset arba DicomFile

Kaip dezerializuoti DICOM JSON Grįžti į Dataset arba DicomFile

Šis mokymas rodo, kaip deserializuoti DICOM JSON atgal į Dataset arba DicomFile objektus naudojant C#. Ši galimybė yra būtina, kai jums reikia restruktūrizuoti DIKOM duomenis iš jSON saugoma duomenų bazėse arba gautas iš interneto APIs.

JSON deserializavimo privalumai

  • ** Duomenų atkūrimas**:- Atkurti DICOM failus iš JSON saugomi duomenų bazėse.

  • • API integravimas:- DICOM duomenys, gaunami kaip JSON iš interneto paslaugų.

  • „Round-Trip“ apdorojimas:- Serializuokite į JSON, modifikuokite, tada deserializuosite atgal į DICOM.

Žymos archyvas: paruošti aplinką

  • Įdiegti „Visual Studio“ arba bet kokį suderinamą .NET IDE.
  • Sukurkite naują .NET 8 konsolės programos projektą.
  • Įdiegti Aspose.Medical iš NuGet paketų valdytojo.

Suprasti deserializavimo galimybes

DicomJsonSerializer siūlo skirtingus deseralizavimo metodus:

MethodInputOutputNaudokite atvejį
Deserialize„JSON String“Dataset?Vieno duomenų rinkinys iš JSON
DeserializeFile„JSON String“DicomFile?Užpildykite DICOM failą su meta informacija
DeserializeList„JSON Array String“Dataset[]?Duomenų rinkinys iš JSON array

Žingsnis po žingsnio vadovas deserializuoti DICOM JSON

1 žingsnis: įdiegti Aspose.Medical

Pridėti Aspose.Medicinos biblioteką į savo projektą naudojant NuGet.

Install-Package Aspose.Medical

2 žingsnis: įtraukti reikiamus pavadinimų erdves

Įveskite nuorodas į reikalingą vardų erdvę savo kodo.

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

3 žingsnis: skaitykite JSON turinį

Skaitykite JSON turinį iš failą arba kintamąjį.

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

4 žingsnis: Deserializuoti į duomenų rinkinį

Use Deserialize Atkurti duomenų rinkinio objektą.

Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

5 žingsnis: dirbti su duomenų rinkiniu

Prieiga ir manipuliavimas rekonstruotu duomenų rinkiniu.

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

6 žingsnis: išsaugoti grįžti į DICOM (neįmanoma)

Sukurkite naują DicomFile ir išsaugokite diske.

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

Išsamus kodo pavyzdys: deserializuoti vieną duomenų rinkinį

Štai pilnas pavyzdys, parodantis, kaip deserializuoti vieną duomenų rinkinį:

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

Deserializuoti Complete DicomFile

Kai jūsų JSON apima failų meta informaciją, naudokite 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");
}

Deserializuokite JSON Array į daugybę duomenų rinkinių

Kai dirbate su „JSON“ srautais, kurių sudėtyje yra kelių duomenų rinkinių:

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

Žymos archyvas: serializavimas, modifikacija, deserializas

Dažnas naudojimo atvejis yra modifikuoti DICOM duomenis per 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");
}

Darbas su duomenų bazės saugojimu

Deserializuoti DICOM JSON paimtas iš duomenų bazės:

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 deserializavimas žiniatinklio programoms

ASP.NET pagrindų programoms naudokite async metodus:

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

Piktnaudžiavimas JSON

Visada įpilkite deserializavimą į try-catch blokus:

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

Apžiūrėkite – Truncated JSON

Dėl didelių JSON failų, įsitikinkite, kad visas turinys yra perskaitytas:

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

Versijos suderinamumas

Įsitikinkite, kad JSON buvo sukurtas su suderinama serializatoriaus versija. klaidingos versijos gali sukelti deserializavimo nesėkmes.

Papildoma informacija

  • Deserializuoti duomenų rinkiniai neapima pikselių duomenų, nebent jie buvo įterpti į originalų JSON.
  • Naudojant gamybą, prieš deserializavimą atlikite tinkamą JSON įvesties patvirtinimą.
  • Apsvarstykite caching deserializuotus duomenų rinkinius dažnai prieinamuosius duomenis.

Conclusion

Šis mokymas parodė, kaip deserializuoti DICOM JSON atgal į Dataset arba DicomFile objektus C# naudojant Aspose.Medical. Ši galimybė leidžia apvalią DIKOM duomenų apdorojimą ir beprotišką integraciją su jSON pagrindu saugojimo ir API sistemomis.

 Lietuvių