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:
| Method | Input | Output | Izmanto gadījumu |
|---|---|---|---|
Deserialize | JSON strīds | Dataset? | Datu komplekts no JSON |
DeserializeFile | JSON strīds | DicomFile? | Pilnīgs DICOM fails ar meta info |
DeserializeList | JSON array strīds | Dataset[]? | 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.Medical2. 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.