Jak dostosować DICOM JSON Output z DicomJsonSerializerOptions
Ten tutorial pokazuje, jak dostosować wyjście serializacji DICOM JSON za pomocą DicomJsonSerializerOptions w C#. Dostosowanie pozwala kontrolować formaty kluczowe jSON, obejmować dodatkowe metadane i obsługiwać wartości numeryczne zgodnie z wymaganiami integracji.
Dlaczego dostosowywać JSON Output?
Różne systemy mogą wymagać różnych formatów JSON. Dostosowanie umożliwia:
- Używanie słów kluczowych czytelnych przez ludzi zamiast numerów tagowych
- Włącz nazwy etykiet do dokumentacji
- Sprawdź, w jaki sposób wartości numeryczne są reprezentowane
- spełnienie specyficznych wymagań systemowych stron trzecich
Wymagania: przygotowanie środowiska
- Zainstaluj program Visual Studio lub dowolny kompatybilny .NET IDE.
- Stwórz nowy projekt aplikacji konsoli .NET 8.
- Instaluj Aspose.Medical z programu NuGet Package Manager.
Dostępne opcje serializacji
| Opcja | Opis | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Użyj słów kluczowych DICOM zamiast numerów tagowych jako kluczy JSON | "PatientName" ws "00100010" |
WriteKeyword | Włącz pole słów kluczowych w każdym obiekcie tagowym | Adds "keyword": "PatientName" |
WriteName | Włącz pole nazwy w każdym obiekcie tagowym | Adds "name": "Patient's Name" |
NumberHandling | Kontrola wartości numerycznej | Liczby jako struny lub rzeczywiste liczby JSON |
Przewodnik krok po kroku do dostosowania JSON Output
Krok 1: Instalacja Aspose.Medical
Dodaj do projektu bibliotekę Aspose.Medical za pomocą NuGet.
Install-Package Aspose.MedicalKrok 2: Włącz niezbędne przestrzenie nazwowe
Dodaj odniesienia do wymaganych przestrzeni nazwowych w kodzie.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Krok 3: Tworzenie instancji opcji
Tworzenie A DicomJsonSerializerOptions Przykładem jest konfiguracja ustawień.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Krok 4: Konfiguracja opcji
Ustaw pożądane opcje dla Twojego wyjścia JSON.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Krok 5: Serio z opcjami
Przeprowadź opcje do metody Serialize.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Krok 6: Zaoszczędź dostosowany wynik
Zapisz lub skorzystaj z dostosowanego JSON.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Pełny przykład kodu ze wszystkimi opcjami
Oto kompletny przykład pokazujący wszystkie opcje dostosowania:
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);Porównanie formatu wyjścia
Wyjście standardowe (format PS3.18 standardowy)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}Z użyciemKeywordsAsJsonKeys = prawda
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}Słowo pisemne i słowo napisane = prawda
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}Z numerem = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}Wraz z numeremPrzekierowanie = AllowReadingFromStringMałżeństwo WriteAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Użyj przykładów przypadków
Dla ludzko czytelnej dokumentacji
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);Dla PS3.18 Kompatybilne usługi internetowe
// 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);Integracja JavaScript Frontend
DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Easier to work with in JS
NumberHandling = JsonNumberHandling.AllowReadingFromString // Native numbers
};
string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);Do przechowywania baz danych
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);Ważne uwagi
Ostrzeżenie interoperacyjności
Niestandardowe opcje mogą zakłócać kompatybilność z niektórymi parsersami DICOM:
// 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();Zalecenia dotyczące zgodności
Jeśli wymagane jest zgodność z DICOM PS3.18, użyj ustawień domyślnych:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsSerijalizacja opcjonalna z opcjami
W przypadku dużych plików użyj serializacji opartej na strumieniu:
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);
}Dodatkowe informacje
- Dostosowane opcje wpływają zarówno na serializację, jak i deseralizacji - zapewniają spójne opcji podczas krążenia danych.
- W tym
WriteNameOpcja dodaje ludzkie nazwy tagów DICOM, które zwiększają rozmiar JSON, ale poprawiają czytelność. - Niektóre systemy stron trzecich mogą wymagać określonych formatów JSON - zapoznaj się z ich dokumentacją przed wyborem opcji.
konkluzja
Ten tutorial wykazał, jak dostosowywać wynik serializacji DICOM JSON w C# za pomocą Aspose.Medical. poprzez konfigurację DicomJsonSerializerOptions, można dostosować format jSON do spełnienia określonych wymagań integracji, jednocześnie zrównoważając czytelność, rozmiar i potrzeby interoperacyjności.