Как настроить DICOM JSON Output с помощью DicomJsonSerializerOptions
Этот урок показывает, как персонализировать вывод сериализации DICOM JSON с помощью DicomJsonSerializerOptions в C#. Приспособление позволяет контролировать ключевые форматы JSon, включая дополнительные метаданные и обрабатывать цифровые значения в соответствии с требованиями интеграции.
Почему нужно настроить JSON?
Разные системы могут потребовать различных форматов JSON. Приспособление позволяет:
- Использование человечески читаемых ключевых слов вместо знаков
- Включение наименований для документации
- Проверка того, как представлены цифровые значения
- Соответствие специфическим требованиям системы третьих лиц
Преимущества: Подготовка к окружающей среде
- Настройка Visual Studio или любой совместимый .NET IDE.
- Создайте новый проект приложения .NET 8 для консоли.
- Инсталляция Aspose.Medical из NuGet Package Manager.
Доступные опции сериализации
| Опция | описание | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Используйте ключевые слова DICOM вместо знаков числа в качестве ключей JSON | "PatientName" ВС "00100010" |
WriteKeyword | Включите поле ключевых слов в каждый объект тега | Adds "keyword": "PatientName" |
WriteName | Включите имя поле в каждый объект тега | Adds "name": "Patient's Name" |
NumberHandling | Контрольная цифровая ценность | Цифры как строки или реальные числа JSON |
Шаг за шагом Руководство по корректировке JSON
Шаг 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"]
}
}С WriteKeyword и WriteName = True
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}С помощью NumberHandling = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}С NumberHandling = AllowReadingFromString♰ WriteAsNumber
{
"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 Удобные веб-сервисы
// 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 интеграция
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, вы можете адаптировать формат JSon для удовлетворения конкретных требований интеграции при равновесии читаемости, размеров и потребностей взаимодействия.