Ako prispôsobiť výstup DICOM JSON s DicomJsonSerializerOptions
Tento tutoriál ukazuje, ako prispôsobiť výstup serializácie DICOM JSON pomocou DicomJsonSerializerOptions v C#. Customizácia vám umožní ovládať kľúčové formáty JSon, zahŕňať ďalšie metadata a zaobchádzať s číselnými hodnotami podľa vašich požiadaviek na integráciu.
Prečo prispôsobiť JSON výstup?
Rôzne systémy môžu vyžadovať rôzne formáty JSON. prispôsobenie umožňuje:
- Používanie ľudsky čitateľných kľúčových slov namiesto značiek
- Obsahuje názvy značiek pre dokumentáciu
- Skontrolujte, ako sú reprezentované číselné hodnoty
- Splnenie špecifických systémových požiadaviek tretích strán
Predpoklady: Príprava životného prostredia
- Nastaviť Visual Studio alebo akýkoľvek kompatibilný .NET IDE.
- Vytvorte nový projekt aplikácie .NET 8 konzoly.
- Inštalovať Aspose.Medical z NuGet Package Manager.
Dostupné možnosti serializácie
| Option | Popis | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Použite kľúčové slová DICOM namiesto označenia čísel ako JSON kľúče | "PatientName" vs "00100010" |
WriteKeyword | Zahrnúť pole kľúčových slov v každom objekte značky | Adds "keyword": "PatientName" |
WriteName | Vložte názovové pole v každom objekte značky | Adds "name": "Patient's Name" |
NumberHandling | Kontrola číslickej hodnoty | Čísla ako pruhy alebo skutočné JSON čísla |
Krok za krokom návod na prispôsobenie výstupu JSON
Krok 1: Inštalácia Aspose.Medical
Pridajte do projektu Aspose.Medicínska knižnica pomocou NuGet.
Install-Package Aspose.MedicalKrok 2: Vložte potrebné názvové priestory
Pridajte odkazy na požadované názvové priestory vo vašom kóde.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Krok 3: Vytvorte možnosť inštancie
Vytvorte A DicomJsonSerializerOptions Napríklad nastavenie nastavenia.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Krok 4: Nastavenie možností
Nastaviť požadované možnosti pre váš JSON výstup.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Krok 5: Serializujte s možnosťami
Prejdite možnosti do metódy Serializácie.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Krok 6: Ušetriť prispôsobený výstup
Uložiť alebo použiť prispôsobený JSON.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Kompletný príklad kódu so všetkými možnosťami
Tu je úplný príklad, ktorý ukazuje všetky možnosti prispôsobenia:
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);Porovnanie formátov výstupu
Predvolený výstup (štandardný 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 číslomHandling = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}S číslomHandling = AllowReadingFromStringḳ WriteAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Používanie príkladov
Ľudovo čitateľná dokumentácia
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);Pre 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);Pre JavaScript Frontend integrácia
DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Easier to work with in JS
NumberHandling = JsonNumberHandling.AllowReadingFromString // Native numbers
};
string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);Na ukladanie databázy
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
Varovanie o interoperabilite
Neštandardné možnosti môžu narušiť kompatibilitu s niektorými parsérmi 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();Odporúčanie na dodržiavanie
Ak sa vyžaduje dodržiavanie DICOM PS3.18, použite predvolené nastavenia:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsStream-based serializácia s možnosťami
Pre veľké súbory použite stream-based serializáciu:
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);
}Dodatočné informácie
- Zvláštne možnosti ovplyvňujú serializáciu a deserializácie - zabezpečujú konzistentné možnosti pri okrúhlych úlohách údajov.
- a The
WriteNameMožnosť pridáva ľuďom čitateľné názvy značky DICOM, ktoré zvyšujú veľkosť JSON, ale zlepšujú čítateľnosť. - Niektoré systémy tretích strán môžu vyžadovať špecifické formáty JSON - pozrite sa na ich dokumentáciu pred výberom možností.
Záver
Tento tutoriál ukázal, ako prispôsobiť výstup serializácie DICOM JSON v C# pomocou Aspose.Medical. Konfiguráciou DicomJsonSerializerOptions, môžete nastaviť formát J SON na splnenie špecifických požiadaviek na integráciu a zároveň vyrovnať čitateľnosť, veľkosť a interoperability potreby.