Cum de a personaliza DICOM JSON Output cu DicomJsonSerializerOptions
Acest tutorial demonstrează modul de personalizare a producției de serializare DICOM JSON folosind DicomJsonSerializerOptions în C#. Personalizarea vă permite să controlați formate-cheie J SON, să includeți metadate suplimentare și să gestionați valorile numerice în funcție de cerințele dvs. de integrare.
De ce să personalizezi rezultatul JSON?
Diferitele sisteme pot necesita diferite formate JSON. personalizarea permite:
- Utilizarea cuvintelor cheie citite de om in loc de numere de etichetare
- Include numele de etichetă pentru documentare
- Verificarea modului în care sunt reprezentate valorile numerice
- Îndeplinirea cerințelor specifice ale sistemului terț
Etichetă: pregătirea mediului
- Instalați Visual Studio sau orice IDE compatibil .NET.
- Creați un nou proiect de aplicații .NET 8 console.
- Instalați Aspose.Medical de la NuGet Package Manager.
Opțiuni de serializare disponibile
| Option | Descriere | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Utilizați cuvinte cheie DICOM în loc de numere de etichetare ca chei JSON | "PatientName" vs "00100010" |
WriteKeyword | Includeți un câmp de cuvinte cheie în fiecare obiect de etichetă | Adds "keyword": "PatientName" |
WriteName | Includeți un câmp de nume în fiecare obiect de etichetă | Adds "name": "Patient's Name" |
NumberHandling | Reprezentarea valorilor numerice de control | Numere ca linii sau numere JSON reale |
Ghidul pas cu pas pentru personalizarea rezultatelor JSON
Pasul 1: Instalați Aspose.Medical
Adăugați biblioteca Aspose.Medical la proiectul dvs. folosind NuGet.
Install-Package Aspose.MedicalPasul 2: Includeți spațiile de nume necesare
Adăugați referințe la spațiile de nume necesare în codul dvs.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Pasul 3: Creați instanta opțiunilor
Creați un DicomJsonSerializerOptions De exemplu, pentru a configura setările.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Pasul 4: Configurați opțiunile
Setarea opțiunilor dorite pentru ieșirea JSON.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Pasul 5: Serializați cu opțiuni
Transferați opțiunile la metoda Serializare.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Pasul 6: Salvați ieșirea personalizată
Salvați sau utilizați JSON personalizat.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Exemplu complet de cod cu toate opțiunile
Iată un exemplu complet care arată toate opțiunile de personalizare:
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);Compararea formatelor de ieșire
Formatul standard PS3.18 (default format)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}Cu UseKeywordsAsJsonKeys = adevărat
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}Cu WriteKeyword și WritName = adevărat
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}Cu numărHandling = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}Cu NumărHandling = AllowReadingFromString < WriteAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Utilizarea exemplelor de cazuri
Pentru documentarea citită de om
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);Pentru PS3.18 Servicii web compatibile
// 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);Pentru integrarea 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);Pentru stocarea bazei de date
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);Considerări importante
Avertisment de interoperabilitate
Opțiunile non-standard pot întrerupe compatibilitatea cu unele parsere 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();Recomandare pentru conformitate
În cazul în care conformitatea cu DICOM PS3.18 este necesară, utilizați setările predefinite:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsSerializare bazată pe flux cu opțiuni
Pentru fișierele mari, utilizați serializarea bazată pe flux:
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);
}Informații suplimentare
- Opțiunile personalizate afectează atât serializarea, cât și desertificarea - asigură opțiuni consistente atunci când datele sunt rotund.
- pe care
WriteNameOpțiunea adaugă nume de etichetă DICOM, care crește dimensiunea JSON, dar îmbunătățește citibilitatea. - Unele sisteme terțe pot necesita formate JSON specifice - consultați documentația lor înainte de a alege opțiuni.
concluziile
Acest tutorial a arătat cum să personalizați producția de serializare DICOM JSON în C# folosind Aspose.Medical. Prin configurarea DicomJsonSerializerOptions, puteți adapta formatul J SON pentru a satisface cerințele specifice de integrare, echilibrând în același timp nevoile de lectură, dimensiune și interoperabilitate.