Hur man anpassar DICOM JSON Output med DicomJsonSerializerOptions
Denna tutorial visar hur du anpassar DICOM JSON serialisering utgången med DicomJsonSerializerOptions i C#. Anpassning gör att du kan styra JSon nyckelfärdigheter, inkludera ytterligare metadata och hantera numeriska värden enligt dina integrationskrav.
Varför anpassa JSON output?
Olika system kan kräva olika JSON-format. anpassning möjliggör:
- Använd mänskligt läsbara nyckelord istället för tagnummer
- Inkludera tagnamn för dokumentation
- Kontrollera hur numeriska värden representeras
- Uppfyller särskilda systemkrav för tredje part
Förutsättningar: Förbereda miljön
- Installera Visual Studio eller någon kompatibel .NET IDE.
- Skapa ett nytt .NET 8 konsolprogram.
- Installera Aspose.Medical från NuGet Package Manager.
Tillgängliga serialiseringsalternativ
| Option | Beskrivning | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | Använd DICOM-nyckelord istället för taggnummer som JSON nycklar | "PatientName" vs "00100010" |
WriteKeyword | Inkludera nyckelordfält i varje tag objekt | Adds "keyword": "PatientName" |
WriteName | Inkludera namnfält i varje tag objekt | Adds "name": "Patient's Name" |
NumberHandling | Kontroll av numerisk värderepresentation | Antal som strängar eller faktiska JSON-nummer |
Steg för steg guide för att anpassa JSON-utgången
Steg 1: Installera Aspose.Medical
Lägg till Aspose.Medicinska biblioteket till ditt projekt med NuGet.
Install-Package Aspose.MedicalSteg 2: Inkludera nödvändiga namnutrymmen
Lägg till hänvisningar till de nödvändiga namnutrymmenna i koden.
using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;Steg 3: Skapa alternativ instans
Skapa A DicomJsonSerializerOptions Till exempel att konfigurera inställningar.
DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();Steg 4: Konfigurera alternativ
Ställ in de önskade alternativen för din JSON-utgång.
options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;Steg 5: Serialisera med alternativ
Överför alternativen till Serialiseringsmetoden.
DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);Steg 6: Spara den anpassade utgången
Spara eller använda den anpassade JSON.
File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");Komplett kodexempel med alla alternativ
Här är ett komplett exempel som visar alla anpassningsalternativ:
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);Jämför utgångsformat
Standard utgång (standard PS3.18 format)
{
"00100010": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"00100020": {
"vr": "LO",
"Value": ["12345"]
}
}Med UseKeywordsAsJsonKeys = sant
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}Med WriteKeyword och WriteName = sant
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}Med NumberHandling = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}Med NumberHandling = AllowReadingFromStringäna WriteAsNumber
{
"00280010": {
"vr": "US",
"Value": [512]
}
}Använd exempel på fall
För mänskligt läsbar dokumentation
DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true,
WriteKeyword = true,
WriteName = true
};
string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);För PS3.18 Kompatibla Webbtjänster
// 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);För 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);För databas lagring
DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
UseKeywordsAsJsonKeys = true, // Better for querying
WriteKeyword = false, // Reduce storage size
WriteName = false
};
string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);Viktiga överväganden
Interoperabilitetsvarning
Icke-standardalternativ kan bryta kompatibiliteten med vissa DICOM parsers:
// 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();Rekommendation för överensstämmelse
När efterlevnad av DICOM PS3.18 krävs, använd standardinställningar:
// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm); // No custom optionsStream-baserad serialisering med alternativ
För stora filer, använd strömbaserad serialisering:
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);
}Ytterligare information
- Anpassade alternativ påverkar både serialisering och deserialisering - säkerställa konsekventa alternativ när runda data.
- och den
WriteNameAlternativet lägger till mänskligt läsbara DICOM-tagnamn som ökar JSON-storleken men förbättrar läsbarheten. - Vissa system från tredje part kan kräva specifika JSON-format - kolla in deras dokumentation innan du väljer alternativ.
slutsatser
Denna tutorial har visat hur man anpassar DICOM JSON serialisering utgång i C# med hjälp av Aspose.Medical. Genom att konfigurera DicomJsonSerializerOptions kan du anpassa formatet för att uppfylla specifika integrationskrav samtidigt som du balanserar läsbarhet, storlek och interoperabilitetsbehov.