Wie man DICOM JSON Output mit DicomJsonSerializerOptionen anpassen
Dieses Tutorial zeigt Ihnen, wie Sie die DICOM JSON-Serialisierungsergebnisse mit DicomJson SerializerOptions in C# anpassen können.Die Anpassung ermöglicht Ihnen die Kontrolle der JSO-Schlüsselformate, zusätzliche Metadaten und die Verwaltung numerischer Werte nach Ihren Integrationsanforderungen.
Warum Customize JSON Output?
Verschiedene Systeme können unterschiedliche JSON-Formate erfordern.Anpassung ermöglicht:
- Verwendung menschlich lesbarer Schlüsselwörter anstelle von Tag-Nummern
- Inbegriffen der Tagnamen für die Dokumentation
- Überprüfen, wie numerische Werte dargestellt werden
- Erfüllung spezifischer Systemanforderungen Dritter
Voraussetzungen: Umwelt vorbereiten
- Installieren Sie Visual Studio oder eine kompatible .NET IDE.
- Erstellen Sie ein neues .NET 8-Konsole-Anwendungsprojekt.
- Installieren Sie Aspose.Medical vom NuGet Package Manager.
Verfügbare Serialisierungsoptionen
| Option | Beschreibung | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Verwenden Sie DICOM-Schlüsselwörter anstelle von Tag-Nummern als JSON-Spiegel | "PatientName" VS "00100010" |
WriteKeyword | Inkludieren Sie das Keywordfeld in jedem Tag-Objekt | Adds "keyword": "PatientName" |
WriteName | Namefeld in jedem Tag-Objekt einfügen | Adds "name": "Patient's Name" |
NumberHandling | Kontrolle der numerischen Wertvertretung | Zahlen als Streifen oder tatsächliche JSON-Nummern |
Schritt für Schritt Guide zur Anpassung der JSON-Ausgabe
Schritt 1: Installieren Aspose.Medical
Fügen Sie die Aspose.Medical Bibliothek zu Ihrem Projekt mit NuGet hinzu.
Install-Package Aspose.MedicalSchritt 2: Inkludieren Sie notwendige Namenräume
Fügen Sie Referenzen zu den erforderlichen Namenräumen in Ihrem Code hinzu.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Schritt 3: Erstellen von Optionen Instance
Schaffung A DicomJsonSerializerOptions Beispiel für die Konfiguration von Einstellungen.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Schritt 4: Konfigurieren von Optionen
Setzen Sie die gewünschten Optionen für Ihre JSON-Ausgabe.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Schritt 5: Serialisieren mit Optionen
Übertragen Sie die Optionen auf die Serialisierungsmethode.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Schritt 6: Speichern Sie den benutzerdefinierten Ausgang
Speichern oder verwenden Sie die benutzerdefinierte JSON.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Vollständige Code Example mit allen Optionen
Hier ein vollständiges Beispiel, das alle Anpassungsoptionen zeigt:
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);Vergleiche der Ausgangsformate
Default Output (Standard PS3.18 Format)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}Mit UseKeywordsAsJsonKeys = wahr
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}Mit WriteKeyword und WriteName = wahr
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}Mit NumberHandling = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}Mit NumberHandling = AllowReadingFromStringMachtAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Verwenden Sie Beispiele
für menschlich Lesbares Dokumentation
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);Für 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);Für 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);für Database Storage
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);Wichtige Erwägungen
Interoperabilitätswarnung
Nicht-standard-Optionen können die Kompatibilität mit einigen DICOM-Parsern brechen:
// 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();Empfehlung für die Einhaltung
Wenn die Einhaltung von DICOM PS3.18 erforderlich ist, verwenden Sie standardmäßige Einstellungen:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsStream-basierte Serialisierung mit Optionen
Für große Dateien verwenden Sie Stream-basierte Serialisierung:
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);
}Zusätzliche Informationen
- Anpassungsoptionen beeinflussen sowohl serialisierung als auch deserialisation - sorgen für konsistente optionen, wenn runde-tripping-daten.
- The
WriteNameDie Option fügt menschlich lesbare DICOM-Tagnamen hinzu, die die JSON-Größe erhöht, aber die Lesbarkeit verbessert. - Einige Drittanbieter-Systeme benötigen möglicherweise spezifische JSON-Formate - prüfen Sie ihre Dokumentation vor der Auswahl der Optionen.
Schlussfolgerungen
Dieses Tutorial hat gezeigt, wie man die DICOM JSON serialisierungsergebnisse in C# mit Aspose.Medical anpassen kann.Durch die Konfiguration von DicomJsonSerializerOptions, können Sie das jSON-Format anzupassen, um spezifische Integrationsanforderungen zu erfüllen und gleichzeitig die Lesbarkeit, Größe und Interoperabilität Bedürfnisse ausgleichen.