Kako prilagoditi DICOM JSON izlazak s DicomJsonSerializerOptions
Ovaj tutorial pokazuje kako prilagoditi izlazak serializiranja DICOM JSON pomoću DicomJsonSerializerOptions u C#. Prilagodba vam omogućuje da kontrolirate ključne formate J SON-a, uključujući dodatne metapodatke i upravljate brojnim vrijednostima prema vašim zahtjevima za integraciju.
Zašto prilagoditi JSON izlazak?
Različiti sustavi mogu zahtijevati različite JSON formate. prilagodba omogućuje:
- Korištenje ljudsko čitljivih ključnih riječi umjesto oznaka brojeva
- Uključivanje imena oznaka za dokumentaciju
- Saznajte kako se prikazuju brojne vrijednosti
- Usklađenost s posebnim zahtjevima sustava trećih strana
Predviđanja: Priprema za okoliš
- Sastavite Visual Studio ili bilo koji kompatibilni .NET IDE.
- Stvorite novi .NET 8 konzol aplikacijski projekt.
- Instalirajte Aspose.Medical iz upravitelja paketa NuGet.
Dostupne opcije serijacije
| Option | Opis | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Koristite ključne riječi DICOM umjesto oznake kao JSON ključeve | "PatientName" VS "00100010" |
WriteKeyword | Uključite polje s ključnim riječima u svakom objektu oznake | Adds "keyword": "PatientName" |
WriteName | Uključite ime polja u svakom objektu oznake | Adds "name": "Patient's Name" |
NumberHandling | Kontrola brojne vrijednosti | Brojevi kao redovi ili stvarni JSON brojevi |
Korak po korak vodič za prilagodbu JSON izlaska
Korak 1: Instalirati Aspose.Medical
Dodajte Aspose.Medical knjižnicu u svoj projekt pomoću NuGeta.
Install-Package Aspose.MedicalKorak 2: Uključite potrebne nazivne prostore
Dodajte upute potrebnim nazivnim prostorima u vašem kodu.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Korak 3: Kreirajte opcije
Stvoriti A DicomJsonSerializerOptions Primjerice, možete postaviti postavke.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Korak 4: Konfigurirajte opcije
Postavite željene opcije za svoj JSON izlazak.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Korak 5: Serializirajte opcije
Prebacite opcije na Serializirani način.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Korak 6: Sačuvajte prilagođeni izlaz
Sačuvajte ili koristite prilagođeni JSON.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Kompletni primjer koda sa svim opcijama
Ovdje je potpuni primjer koji prikazuje sve opcije prilagodbe:
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);Usporedba formata izlaska
Podrazumevani ishod (standardni PS3.18 format)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}S korisnim ključnim riječimaAsJsonKeys = true
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}S WriteKeyword i WriteName = istinito
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}S brojomHandling = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}S brojemHandling = AllowReadingFromString♰ WriteAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Koristite primjere slučajeva
Za ljudsko-čitanu dokumentaciju
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);Za PS3.18 Komplicirane web usluge
// 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);Za JavaScript Frontend integraciju
DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Easier to work with in JS
NumberHandling = JsonNumberHandling.AllowReadingFromString // Native numbers
};
string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);Za skladištenje baze podataka
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);Važna razmatranja
Upozorenje o interoperabilnosti
Ne-standardne opcije mogu narušiti kompatibilnost s nekim DICOM parsers:
// 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();Preporuka za usklađenost
Kada je potrebna usklađenost s DICOMom PS3.18, koristite privremene postavke:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsSerializiranje na temelju struje s opcijama
Za velike datoteke, koristite serijaliziranje na temelju struje:
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);
}Dodatne informacije
- Prilagođene opcije utječu na serializiranje i deserializirati - osigurati dosljedna opcija prilikom krug-tripping podataka.
- Tko je
WriteNameOpcija dodaje ljudski čitljive ime tagova DICOM koji povećava JSON veličinu, ali poboljšava čitanje. - Neki sustavi trećih strana mogu zahtijevati određene JSON formate - pročitajte njihovu dokumentaciju prije odabira opcija.
zaključak
Ovaj tutorial je pokazao kako prilagoditi izlazak serializiranja DICOM JSON u C# pomoću Aspose.Medical. Konfiguriranjem DicomJsonSerializerOptions, možete prilagođavati format JSon da zadovolji određene zahtjeve integracije dok uravnotežite potrebe čitanja, veličine i interoperabilnosti.