Hoe om DICOM JSON-uitgang aan te passen met DicomJsonSerializerOpties
Deze tutorial toont aan hoe u de DICOM JSON serialisatie output kunt aanpassen met behulp van DicomJsonSerializerOptions in C#. Customization stelt u in staat om jSON sleutelformaten te beheersen, extra metadata te bevatten en numerieke waarden te beheren volgens uw integratievereisten.
Waarom JSON output aanpassen?
Verschillende systemen kunnen verschillende JSON-formaten vereisen.Customization maakt het mogelijk:
- Mensen leesbare keywords gebruiken in plaats van tagnummers
- Inclusief tagnamen voor documentatie
- Controleer hoe numerieke waarden worden vertegenwoordigd
- Het voldoen aan specifieke systeemvereisten van derden
Voorwaarden: het voorbereiden van het milieu
- Installeer Visual Studio of een compatibele .NET IDE.
- Maak een nieuw .NET 8 console-applicatieproject.
- Installeer Aspose.Medical vanaf de NuGet Package Manager.
Beschikbare opties voor serialisatie
| Option | Beschrijving | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Gebruik DICOM keywords in plaats van tagnummers als JSON sleutels | "PatientName" VS "00100010" |
WriteKeyword | Inclusie van het keywordveld in elke tag object | Adds "keyword": "PatientName" |
WriteName | Inclusie naamveld in elke tag object | Adds "name": "Patient's Name" |
NumberHandling | Controle numerieke waarde vertegenwoordiging | Aantal als strengen of werkelijke JSON-nummers |
Step-by-step gids voor het aanpassen van JSON output
Stap 1: Installeer Aspose.Medical
Voeg de Aspose.Medische bibliotheek toe aan uw project met behulp van NuGet.
Install-Package Aspose.MedicalStap 2: Inkluderen van noodzakelijke naamruimten
Voeg verwijzingen toe aan de vereiste naamruimten in uw code.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Stap 3: Creëren van opties instance
Creëer een DicomJsonSerializerOptions Bijvoorbeeld om instellingen te configureren.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Stap 4: Configureer opties
Stel de gewenste opties voor uw JSON-uitgang.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Stap 5: Serialiseren met opties
Ga de opties door naar de Serialize-methode.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Stap 6: Save the Custom Output
Speel of gebruik de aangepaste JSON.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Volledige code voorbeeld met alle opties
Hier is een complete voorbeeld die alle aanpassingsopties toont:
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);Vergelijking van output formaten
De standaard output (standard PS3.18)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}Met UseKeywordsAsJsonKeys = waar
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}Met WriteKeyword en WriteName = waar
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}Met NumberHandling = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}Met NumberHandling = AllowReadingFromString < WriteAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Gebruik Case voorbeelden
Voor menselijk leesbare documentatie
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);Voor PS3.18 Compliant Web Services
// 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);Voor JavaScript Frontend Integratie
DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Easier to work with in JS
NumberHandling = JsonNumberHandling.AllowReadingFromString // Native numbers
};
string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);Voor database opslag
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);Belangrijke overwegingen
Interoperabiliteit waarschuwing
Niet-standaard opties kunnen de compatibiliteit met sommige DICOM parsers breken:
// 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();Aanbeveling voor naleving
Wanneer de naleving van DICOM PS3.18 vereist is, gebruik dan standaardinstellingen:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsStream-based serialisatie met opties
Voor grote bestanden, gebruik stream-based serialisatie:
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);
}Aanvullende informatie
- Aanpassingsopties beïnvloeden zowel serialisering als deserialisering - zorgen voor consistente opties wanneer rond-tripping gegevens.
- De
WriteNameDe optie voegt mensen leesbare DICOM-tagnamen toe die JSON-grootte vergroten maar de leesbaarheid verbeteren. - Sommige systemen van derden kunnen specifieke JSON-formaten vereisen - raadpleeg hun documentatie voordat u de opties kiest.
Conclusie
Deze tutorial heeft aangetoond hoe u de DICOM JSON serialisatie output in C# kunt aanpassen met behulp van Aspose.Medical. Door DicomJsonSerializerOptions te configureren, kunt u het J SON-formaat toe te passen om aan specifieke integratievereisten te voldoen en tegelijkertijd de leesbaarheid, grootte en interoperabiliteit behoeften te balanceren.