Hogyan lehet Deserializálni DICOM JSON vissza Dataset vagy DicomFile

Hogyan lehet Deserializálni DICOM JSON vissza Dataset vagy DicomFile

Ez az útmutató azt mutatja, hogyan lehet a DICOM JSON-t visszaállítani a Dataset vagy a DicomFile objektumokhoz a C# használatával.Ez a képesség elengedhetetlen, ha újra kell építenie a json adatbázisokban tárolt vagy webes APIs-ektől kapott adatokból.

JSON Deserialization előnyei

    • Az adatkezelés felújítása:- DICOM fájlok helyreállítása JSON adatbázisokban tárolt.
  • Az API integráció *:- A DICOM adatokat a webes szolgáltatásokból JSON formájában kezelik.

  • ** A körforgás feldolgozása**:- Serializáljon a JSON-ra, módosítsa, majd deserializálja vissza a DICOM-ba.

Előfeltételek: a környezet előkészítése

  • A Visual Studio vagy bármely kompatibilis .NET IDE beállítása.
  • Hozzon létre egy új .NET 8 konzol alkalmazási projektet.
  • Telepítse az Aspose.Medical-t a NuGet csomagkezelőből.

A deserializálási lehetőségek megértése

A DicomJsonSerializer különböző deseralizációs módszereket kínál:

MethodInputkimenetelHasználati esetek
DeserializeJSON szalagDataset?Egyedi adatkészlet JSON
DeserializeFileJSON szalagDicomFile?Teljes DICOM fájl meta info
DeserializeListJSON array szalagDataset[]?Több adatkészlet JSON array

Lépésről lépésre útmutató a DICOM JSON deserializálásához

1. lépés: Install Aspose.Medical

Add hozzá az Aspose.Medical könyvtárat a projekthez a NuGet használatával.

Install-Package Aspose.Medical

2. lépés: Tartalmazza a szükséges névterületeket

Hozzáadjon hivatkozásokat a szükséges névterületekhez a kódjában.

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

3. lépés: olvassa el a JSON tartalmat

Olvassa el a JSON tartalmat egy fájlból vagy változóból.

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

4. lépés: Deserializáljuk az adatkészletet

Használat Deserialize A Dataset objektum újjáépítése.

Dataset? dataset = DicomJsonSerializer.Deserialize(jsonText);

5. lépés: Az adatokkal való együttműködés

Hozzáférés és manipuláció a felújított adatkészlet.

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

6. lépés: mentse vissza a DICOM (opcionális)

Hozzon létre egy új DicomFile és mentse a lemezre.

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

Teljes kód példa: Deserialize Single Dataset

Íme egy teljes példa, amely megmutatja, hogyan lehet deserializálni egy adatkészletet:

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áljuk a teljes DicomFile

Ha a JSON fájl meta információkat tartalmaz, használja 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álja a JSON Array-t több adatkészülékre

Amikor a JSON-val dolgozunk, több adatkészletet tartalmaz:

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

Kerek út példája: Serializ, Modify, Deserialize

Egy gyakori felhasználási eset a DICOM adatai módosítása a JSON-on keresztül:

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

Az adatbázis tárolása

Deserialize DICOM JSON kapott egy adatbázis:

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 webes alkalmazásokhoz

Az ASP.NET Core alkalmazásokhoz az async módszereket használja:

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

A rosszindulatú JSON

Mindig öblítse le a deserializációt a try-catch blokkokban:

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

Felszabadult a JSON

A nagy JSON fájlok, győződjön meg róla, hogy a teljes tartalom olvasható:

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

Versiós kompatibilitás

Győződjön meg róla, hogy a JSON-t a serializátor kompatibilis verziójával generálták.

További információk

  • A deserializált adatkészletek nem tartalmaznak pixeladatokat, kivéve, ha az eredeti JSON-ban van beépítve.
  • A termelési használatra a JSON bevitele megfelelő érvényesítését kell végrehajtani a deserializáció előtt.
  • Tekintse meg a titkosított adatkészleteket a gyakran hozzáférhető adatokhoz.

következtetések

Ez a kézikönyv megmutatta, hogyan lehet deserializálni a DICOM JSON vissza a Dataset vagy a DicomFile objektumok C# használatával Aspose.Medical.Ez a képesség lehetővé teszi a körforgásos DIKOM adatfeldolgozását és a jelszó nélküli integrációt a Json-alapú tároló és API rendszerekkel.

 Magyar