Hvordan tilpasse DICOM JSON Output med DicomJsonSerializerOptions
Denne veiledningen viser hvordan du kan tilpasse DICOM JSON serialisering utgang ved hjelp av DicomJsonSerializerOptions i C#. Tilpasning lar deg kontrollere jSON nøkkelformater, inkludere ytterligere metadata, og håndtere numeriske verdier i henhold til dine integrasjonsbehov.
Hvorfor tilpasse JSON utgang?
Forskjellige systemer kan kreve forskjellige JSON-format.
- Bruker menneskelig lesbare nøkkelord i stedet for tagnummer
- Inkluderer etikettnavne for dokumentasjon
- Kontroller hvordan numeriske verdier er representert
- Overholdelse av spesifikke systemkrav fra tredjeparter
Forutsetninger: Å forberede miljøet
- Installer Visual Studio eller noe kompatibelt .NET IDE.
- Skap et nytt .NET 8 konsolapplikasjon prosjekt.
- Installere Aspose.Medical fra NuGet Package Manager.
Tilgjengelige serialisering alternativer
| Option | Description | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Bruk DICOM nøkkelord i stedet for tag-numre som JSON-nøkler | "PatientName" vs "00100010" |
WriteKeyword | Inkludere nøkkelordfelt i hvert tag objekt | Adds "keyword": "PatientName" |
WriteName | Inkludere navnfeltet i hvert tag objekt | Adds "name": "Patient's Name" |
NumberHandling | Kontroller numerisk verdi representasjon | Tall som strenger eller virkelige JSON-nummer |
Step-by-step guide for å tilpasse JSON utgang
Steg 1: Installere Aspose.Medical
Legg til Aspose.Medical Library til prosjektet ditt ved hjelp av NuGet.
Install-Package Aspose.MedicalSteg 2: Inkludere nødvendige navnområder
Legg til referanser til de nødvendige navnene i koden din.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Trinn 3: Å lage alternativer
Skaper A DicomJsonSerializerOptions For eksempel å konfigurere innstillinger.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Steg 4: Konfigurere alternativer
Sett de ønskede alternativene for din JSON utgang.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Steg 5: Serialisere med alternativer
Pass alternativene til serialiseringsmetoden.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Steg 6: Spare tilpasset utgang
Lagre eller bruke den tilpassede JSON.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Komplett kode eksempler med alle alternativer
Her er et komplett eksempel som viser alle tilpassingsalternativer:
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);Sammenlign utgangsformater
Standard utgang (standard PS3.18 format)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}Med UseKeywordsAsJsonKeys = sant
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}Med WriteKeyword og WriteName = sann
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}Med NumberHandling = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}Med NumberHandling = AllowReadingFromString og WriteAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Brukes eksempler
For menneskelig lesbar dokumentasjon
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);For PS3.18 Kompatible nettjenester
// 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);For JavaScript Frontend Integrasjon
DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Easier to work with in JS
NumberHandling = JsonNumberHandling.AllowReadingFromString // Native numbers
};
string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);For databaseslagring
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);Viktige vurderinger
Interoperabilitet advarsel
Ikke-standard alternativer kan bryte kompatibiliteten med noen DICOM parser:
// 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();Anbefaling for overholdelse
Når overholdelse av DICOM PS3.18 er nødvendig, bruk standardinnstillingene:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsStream-basert serialisering med alternativer
For store filer, bruk strømbasert serialisering:
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);
}Ytterligere informasjon
- Tilpassede alternativer påvirker både serialisering og deserialisering - sørge for konsekvent valg når runde-tripping data.
- The
WriteNameAlternativet legger til menneskelig lesbare DICOM-tag-navn som øker JSON-størrelsen, men forbedrer lesbarheten. - Noen tredjepartssystemer kan kreve spesifikke JSON-format - sjekk dokumentasjonen før du velger alternativer.
Conclusion
Denne veiledningen har vist hvordan du kan tilpasse DICOM JSON serialisering utgang i C# ved hjelp av Aspose.Medical. Ved å konfigurere DicomJsonSerializerOptions, kan du justere formatet til å oppfylle spesifikke integrasjonskrav mens du balanserer lesbarhet, størrelse og interoperabilitet behov.