Як налаштувати DICOM JSON Output з DicomJsonSerializerOptions
Цей навчальний заклад показує, як налаштувати вихід серіалізації DICOM JSON за допомогою DicomJsonSerializerOptions в C#. Налаштування дозволяє контролювати ключові формати J SON, включаючи додаткові метадані та керувати чисельними значеннями відповідно до ваших вимог до інтеграції.
Чому потрібно адаптуватися до JSON?
Різні системи можуть вимагати різних форматів JSON. Налаштування дозволяє:
- Використання людсько-чистих ключових слів замість знаків
- Включити імена таг для документації
- Перевірка того, як представлені цифрові значення
- Виконання конкретних системних вимог третьої сторони
Докладніше: Підготовка навколишнього середовища
- Налаштування Visual Studio або будь-якого сумісного .NET IDE.
- Створення нового проекту .NET 8 консолі.
- Завантажити Aspose.Medical з NuGet Package Manager.
Доступні варіанти серіалізації
| Option | Опис | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Використовуйте ключові слова DICOM замість знаків числа як ключі JSON | "PatientName" ВС "00100010" |
WriteKeyword | Включити поле ключових слів в кожен об’єкт теґу | Adds "keyword": "PatientName" |
WriteName | Введіть ім’я поля в кожну тегу об’єкта | Adds "name": "Patient's Name" |
NumberHandling | Контроль чисельної цінності | Число як стрічки або фактичні числа JSON |
Крок за кроком Посібник для налаштування JSON Output
Крок 1: Інсталяція Aspose.Medical
Додайте бібліотеку Aspose.Medical до вашого проекту за допомогою NuGet.
Install-Package Aspose.MedicalКрок 2: Включити необхідні іменні простори
Додайте посилання на необхідні іменні простори у вашому коді.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Крок 3: Створення опціонів
Створення A DicomJsonSerializerOptions Прикладом є встановлення налаштувань.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Крок 4: Налаштування варіантів
Налаштуйте бажані варіанти для вашого JSON-виходу.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Крок 5: Серіалізуйте з опціями
Перейдіть варіанти до методу серйозності.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Крок 6: Зберегти персоналізований вихід
Зберегти або використовувати персоналізований JSON.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Повний код з усіма варіантами
Ось повний приклад, що показує всі варіанти налаштування:
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);Порівняння вихідних форматів
Вихід за замовчуванням (стандартний формат PS3.18)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}Використання ключових слівAsJsonKeys = true
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}Письменник і письменник = правдивий
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}Створення Writing = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}У зв’язку з цим вищезазначеним пунктом визначається
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Використання прикладів
Для людсько-чистої документації
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);Завантажити 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);Завантажити 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);для зберігання баз даних
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);Важливі розгляди
Попередження про взаємодію
Нестандартні варіанти можуть порушувати сумісність з деякими парашутами 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();Рекомендації щодо дотримання
При необхідності дотримання DICOM PS3.18 використовуйте стандартні налаштування:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsСеріалізація на базі потоку з опціями
Для великих файлів використовуйте серіалізацію на основі потоку:
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);
}Додаткова інформація
- Налаштувані варіанти впливають як на серіалізацію, так і на дезеріализацію - забезпечують послідовні опції при обертаннях даних.
- Того ж
WriteNameОпція додає людиночитані імена теґів DICOM, які збільшують розмір JSON, але покращують читальність. - Деякі системи третьої сторони можуть вимагати конкретних форматів JSON - перевірте свою документацію, перш ніж вибрати варіанти.
Заключення
Цей навчальний заклад показав, як налаштувати вихід серіалізації DICOM JSON в C# за допомогою Aspose.Medical. Конфігуруючи DicomJsonSerializerOptions, ви можете адаптувати формат J SON для задоволення конкретних вимог інтеграції, збалансуючи читання, розмір і потреби в взаємодії.