Како прилагодити DICOM JSON излаз са DicomJsonSerializerOptions
Овај туториал показује како да прилагодите излаз серијализације ДИЦОМ ЈСОН користећи ДицомЈсонСериализаторОпције у Ц#. Прилагођавање вам омогућава да контролишете Кључне формати ЈССОН-а, укључујући додатне метадане и управљате бројним вредностима према вашим захтевима за интеграцију.
Зашто прилагодити JSON излаз?
Различити системи могу захтевати различите JSON формате.
- Коришћење људско-читаних кључних речи уместо таг бројева
- Укључујући ознаке имена за документацију
- Проверите како се представљају бројне вредности
- Одређивање специфичних системских захтева треће стране
Принципи: Припрема за животну средину
- Инсталирајте Visual Studio или било који компатибилан .NET IDE.
- Креирање новог .NET 8 апликационог пројекта конзоле.
- Инсталирајте Aspose.Medical из менаџера пакета NuGet.
Доступне опције за серијализацију
| Option | Опис | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Koristite ključne reči DICOM umesto oznake kao JSON ključeve | "PatientName" ВС "00100010" |
WriteKeyword | Укључите поље за кључне речи у сваком објекту ознака | Adds "keyword": "PatientName" |
WriteName | Укључите име поља у сваки објекат ознака | Adds "name": "Patient's Name" |
NumberHandling | Контрола бројне вредности | Бројеви као нијансе или стварни ЈСОН број |
Корак по корак водич за прилагођавање JSON излаза
Корак 1: Инсталирајте Aspose.Medical
Додајте Аппосе.Медицинска библиотека у свој пројекат користећи НуГет.
Install-Package Aspose.MedicalКорак 2: Укључите неопходне имена
Додајте референце на потребне имена простора у вашем коду.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Корак 3: Креирање опције инстанце
Креирајте А 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);Поређење излазних формата
Дефинисани излаз (Стандардни ПС3.18 формат)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}Sa UseKeywordsAsJsonKeys = istinita
{
"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" }]
}
}Sa brojomHandling = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}Са БројемСлужбе = ДозвољавањеРедактирањеФромСтринг и ПисањеСброј
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Koristite primere slučaja
За људско-читајућу документацију
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);За ПС3.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);Важни размишљања
Upozorenje o interoperabilnosti
Нестандардне опције могу прекинути компатибилност са неким ДИЦОМ пасерима:
// 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();Препорука за усклађеност
Kada je potrebna usklađenost sa DICOM PS3.18, koristite privremene postavke:
// 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Опција додаје људско-читане имена ознака ДИКОМ који повећава величину ЈСОН-а, али побољшава читавост. - Неки системи трећих страна могу захтевати специфичне JSON формате - прегледајте њихову документацију пре него што изаберете опције.
Закључак
Овај туториал је показао како да прилагодите излаз серијализације ДИЦОМ ЈСОН у Ц # користећи Аппосе.Медицал. Конфигурисањем ДицомЈСонСеријализаторОпција, можете подесити ЈСОН формат да задовољи специфичне захтеве интеграције док уравнотежујете читавост, величину и потребе за интерактивности.