Jak přizpůsobit výstup DICOM JSON s DicomJsonSerializerOptions
Tento tutoriál ukazuje, jak přizpůsobit výstup serializace DICOM JSON pomocí DicomJsonSerializerOptions v C#. Customizace vám umožňuje ovládat klíčové formáty jSON, zahrnovat další metadata a zpracovávat číselné hodnoty podle vašich požadavků na integraci.
Proč přizpůsobit výstup JSON?
Různé systémy mohou vyžadovat různé formáty JSON.
- Použití lidsky čitelných klíčových slov namísto čísel
- Obsahuje jména značek pro dokumentaci
- Zkontrolujte, jak jsou reprezentovány číselné hodnoty
- Splnění specifických systémových požadavků třetích stran
Předpoklady: Příprava životního prostředí
- Nastavení Visual Studio nebo jakéhokoli kompatibilního .NET IDE.
- Vytvořte nový projekt aplikace .NET 8 konzole.
- Instalace aplikace Aspose.Medical z programu NuGet Package Manager.
Dostupné možnosti serializace
| Option | Popis | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Použijte klíčová slova DICOM namísto označování čísel jako kláves JSON | "PatientName" vs "00100010" |
WriteKeyword | Vložte pole klíčových slov do každého objektu značky | Adds "keyword": "PatientName" |
WriteName | Vložte název pole v každém objektu značky | Adds "name": "Patient's Name" |
NumberHandling | Kontrola číselné hodnoty | Čísla jako řádky nebo skutečné JSON čísla |
Krok za krokem průvodce pro přizpůsobení výstupu JSON
Krok 1: Instalace Aspose.Medical
Přidejte do svého projektu knihovnu Aspose.Medicine pomocí aplikace NuGet.
Install-Package Aspose.MedicalKrok 2: Vložte potřebné názevové prostory
Přidejte odkazy na požadované názevové prostory ve vašem kódu.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Krok 3: Vytvořte možnost Instance
Vytvořte A DicomJsonSerializerOptions Příkladem je nastavování nastavení.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Krok 4: Nastavení možností
Nastavení požadovaných možností pro váš JSON výstup.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Krok 5: Serializujte s možností
Přejděte možnosti do metody Serializace.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Krok 6: Ušetřete přizpůsobený výstup
Uložte nebo použijte přizpůsobený JSON.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Kompletní příklad kódu se všemi možnostmi
Zde je kompletní příklad, který ukazuje všechny možnosti přizpůsobení:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;
// Load DICOM file
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
// Configure serialization options
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true,
NumberHandling = JsonNumberHandling.WriteAsString
};
// Serialize with custom options
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);
// Save output
File.WriteAllText("fully_customized.json", json);
Console.WriteLine("DICOM serialized with all custom options!");
Console.WriteLine(json);Porovnání formátů výstupu
Standardní výstup (standardní PS3.18 formát)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}S použitímKeywordsAsJsonKeys = pravda
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}S WriteKeyword a WriteName = pravda
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}S číslemHandling = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}S číslemHandling = AllowReadingFromString♰ WriteAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Použijte příklady případů
Pro lidsky čitelnou dokumentaci
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);Pro PS3.18 Kompatibilní webové služby
// Use default options for DICOM PS3.18 compliance
DicomJsonSerializerOptions webOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = false, // Use tag numbers
WriteKeyword = false,
WriteName = false,
NumberHandling = JsonNumberHandling.WriteAsString
};
string ps318Json = DicomJsonSerializer.Serialize(dcm, webOptions);Integrace JavaScript Frontend
DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Easier to work with in JS
NumberHandling = JsonNumberHandling.AllowReadingFromString // Native numbers
};
string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);Uložení databáze
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);Důležité úvahy
Varování o interoperabilitě
Neštandardní možnosti mohou narušit kompatibilitu s některými parséry DICOM:
// WARNING: This format may not be compatible with all DICOM JSON parsers
DicomJsonSerializerOptions nonStandardOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true // Not PS3.18 compliant
};
// For maximum compatibility, use defaults:
DicomJsonSerializerOptions standardOptions = new DicomJsonSerializerOptions();Doporučení pro dodržování
Pokud je požadována dodržování DICOM PS3.18, použijte výchozí nastavení:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsStream-based serializace s možností
Pro velké soubory použijte stream-based serializace:
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
DicomFile dcm = DicomFile.Open("large_scan.dcm");
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true
};
using (FileStream fs = File.Create("large_customized.json"))
{
DicomJsonSerializer.Serialize(fs, dcm.Dataset, options, writeIndented: true);
}Další informace
- Přizpůsobené možnosti ovlivňují jak serializace, tak deserializací - zajišťují konzistentní možnosti při kroužkování dat.
- a to
WriteNameMožnost přidává lidsky čitelné názvy tagů DICOM, které zvyšují velikost JSON, ale zlepšují čtení. - Některé systémy třetích stran mohou vyžadovat specifické formáty JSON - před výběrem možností se podívejte na jejich dokumentaci.
závěr
Tento tutoriál ukázal, jak přizpůsobit výstup serializace DICOM JSON v C# pomocí Aspose.Medical. Konfigurováním DicomJsonSerializerOptions, můžete upravit formát jSON tak, aby splňovaly specifické integrační požadavky a zároveň vyvážit čitelnost, velikost a potřeby interoperability.