Hvordan til at tilpasse DICOM JSON Output med DicomJsonSerializerOptions
Denne tutorial viser dig, hvordan du kan tilpasse DICOM JSON serialisering udgang ved hjælp af DicomJsonSerializerOptions i C#. Tilpasning giver dig mulighed for at styre jSON nøgleformater, inkludere yderligere metadata, og håndtere numeriske værdier i henhold til dine integrationskrav.
Hvorfor tilpasse JSON udgang?
Forskellige systemer kan kræve forskellige JSON-format. tilpasning muliggør:
- Brug af menneskelig læsbare nøgleord i stedet for tagnummer
- Inkluderer tagnavne til dokumentation
- Kontroller, hvordan numeriske værdier repræsenteres
- Overholdelse af specifikke systemkrav fra tredjeparter
Forside: Forberedelse af miljøet
- Indstill Visual Studio eller ethvert kompatibelt .NET IDE.
- Skab et nyt .NET 8 applikationsprojekt.
- Installere Aspose.Medical fra NuGet Package Manager.
Tilgængelige serialiseringsmuligheder
| Option | Beskrivelse | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Brug DICOM nøgleord i stedet for tag nummer som JSON nøgler | "PatientName" vs "00100010" |
WriteKeyword | Inkludere nøgleordfeltet i hvert tag objekt | Adds "keyword": "PatientName" |
WriteName | Indtast navnfeltet i hvert tag objekt | Adds "name": "Patient's Name" |
NumberHandling | Kontrol af numerisk værdi | Tall som strimler eller virkelige JSON-numre |
Step-by-step guide til at tilpasse JSON-udgang
Trin 1: Installation af Aspose.Medical
Tilføj Aspose.Medicinsk bibliotek til dit projekt ved hjælp af NuGet.
Install-Package Aspose.MedicalTrin 2: Indtast de nødvendige navneområder
Tilføj henvisninger til de krævede navneområder i din kode.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Trin 3: Opbygning af optioner
Skab en DicomJsonSerializerOptions Eksempelvis til at konfigurere indstillinger.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Trin 4: Indstill optioner
Indstill de ønskede muligheder for din JSON-udgang.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Trin 5: Serialiser med muligheder
Gå til serialiseringsmetoden.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Trin 6: Spare den tilpassede udgang
Spare eller bruge den tilpassede JSON.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Fuld kodeksempel med alle muligheder
Her er et komplet eksempel, der viser alle tilpasningsmuligheder:
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);Sammenligning af formater
Standard udgang (standard PS3.18 format)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}Med UseKeywordsAsJsonKeys = sandt
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}Med WriteKeyword og WriteName = sandt
{
"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]
}
}Brug af eksempler
For menneskelig læsbar dokumentation
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);For PS3.18 Kompatible Webtjenester
// 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 Integration
DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Easier to work with in JS
NumberHandling = JsonNumberHandling.AllowReadingFromString // Native numbers
};
string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);For opbevaring af databaser
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);Vigtige overvejelser
Interoperabilitet advarsel
Ikke-standard muligheder kan bryde kompatibilitet med nogle 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 om overholdelse
Når DICOM PS3.18 overholdelse er nødvendig, skal du bruge standardindstillinger:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsStream-baseret serialisering med muligheder
For store filer, brug streamingbaseret 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);
}Yderligere information
- Tilpassede muligheder påvirker både serialisering og deserialisering - sikre konsekvente muligheder, når runde-tripping data.
- Den
WriteNameOptionen tilføjer menneskelig læsbare DICOM tagnavn, som øger JSON-størrelsen, men forbedrer læsbarheden. - Nogle tredjepartssystemer kan kræve specifikke JSON-formater - se deres dokumentation, før du vælger muligheder.
Konklusion
Denne tutorial har vist, hvordan man tilpasser DICOM JSON serialisering udgang i C# ved hjælp af Aspose.Medical. Ved at konfigurere DicomJsonSerializerOptions, kan du tilpasse den jSON format til at opfylde specifikke integration krav samtidig med at balancere læsbarhed, størrelse og interoperabilitet behov.