Ako prispôsobiť výstup DICOM JSON s DicomJsonSerializerOptions

Ako prispôsobiť výstup DICOM JSON s DicomJsonSerializerOptions

Tento tutoriál ukazuje, ako prispôsobiť výstup serializácie DICOM JSON pomocou DicomJsonSerializerOptions v C#. Customizácia vám umožní ovládať kľúčové formáty JSon, zahŕňať ďalšie metadata a zaobchádzať s číselnými hodnotami podľa vašich požiadaviek na integráciu.

Prečo prispôsobiť JSON výstup?

Rôzne systémy môžu vyžadovať rôzne formáty JSON. prispôsobenie umožňuje:

  • Používanie ľudsky čitateľných kľúčových slov namiesto značiek
  • Obsahuje názvy značiek pre dokumentáciu
  • Skontrolujte, ako sú reprezentované číselné hodnoty
  • Splnenie špecifických systémových požiadaviek tretích strán

Predpoklady: Príprava životného prostredia

  • Nastaviť Visual Studio alebo akýkoľvek kompatibilný .NET IDE.
  • Vytvorte nový projekt aplikácie .NET 8 konzoly.
  • Inštalovať Aspose.Medical z NuGet Package Manager.

Dostupné možnosti serializácie

OptionPopisImpact
UseKeywordsAsJsonKeysPoužite kľúčové slová DICOM namiesto označenia čísel ako JSON kľúče"PatientName" vs "00100010"
WriteKeywordZahrnúť pole kľúčových slov v každom objekte značkyAdds "keyword": "PatientName"
WriteNameVložte názovové pole v každom objekte značkyAdds "name": "Patient's Name"
NumberHandlingKontrola číslickej hodnotyČísla ako pruhy alebo skutočné JSON čísla

Krok za krokom návod na prispôsobenie výstupu JSON

Krok 1: Inštalácia Aspose.Medical

Pridajte do projektu Aspose.Medicínska knižnica pomocou NuGet.

Install-Package Aspose.Medical

Krok 2: Vložte potrebné názvové priestory

Pridajte odkazy na požadované názvové priestory vo vašom kóde.

using Aspose.Medical.Dicom;
using Aspose.Medical.Dicom.Serialization;
using System.Text.Json.Serialization;

Krok 3: Vytvorte možnosť inštancie

Vytvorte A DicomJsonSerializerOptions Napríklad nastavenie nastavenia.

DicomJsonSerializerOptions options = new DicomJsonSerializerOptions();

Krok 4: Nastavenie možností

Nastaviť požadované možnosti pre váš JSON výstup.

options.UseKeywordsAsJsonKeys = true;
options.WriteKeyword = true;
options.WriteName = true;
options.NumberHandling = JsonNumberHandling.WriteAsString;

Krok 5: Serializujte s možnosťami

Prejdite možnosti do metódy Serializácie.

DicomFile dcm = DicomFile.Open("patient_scan.dcm");
string json = DicomJsonSerializer.Serialize(dcm, options, writeIndented: true);

Krok 6: Ušetriť prispôsobený výstup

Uložiť alebo použiť prispôsobený JSON.

File.WriteAllText("customized_output.json", json);
Console.WriteLine("Customized JSON output saved!");

Kompletný príklad kódu so všetkými možnosťami

Tu je úplný príklad, ktorý ukazuje všetky možnosti prispôsobenia:

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);

Porovnanie formátov výstupu

Predvolený výstup (štandardný PS3.18 formát)

{
  "00100010": {
    "vr": "PN",
    "Value": [{ "Alphabetic": "DOE^JOHN" }]
  },
  "00100020": {
    "vr": "LO",
    "Value": ["12345"]
  }
}

S použitímKeywordsAsJsonKeys = pravda

{
  "PatientName": {
    "vr": "PN",
    "Value": [{ "Alphabetic": "DOE^JOHN" }]
  },
  "PatientID": {
    "vr": "LO",
    "Value": ["12345"]
  }
}

S WriteKeyword a WriteName = pravda

{
  "00100010": {
    "vr": "PN",
    "keyword": "PatientName",
    "name": "Patient's Name",
    "Value": [{ "Alphabetic": "DOE^JOHN" }]
  }
}

S číslomHandling = WriteAsString

{
  "00280010": {
    "vr": "US",
    "Value": ["512"]
  }
}

S číslomHandling = AllowReadingFromStringḳ WriteAsNumber

{
  "00280010": {
    "vr": "US",
    "Value": [512]
  }
}

Používanie príkladov

Ľudovo čitateľná dokumentácia

DicomJsonSerializerOptions docOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,
    WriteKeyword = true,
    WriteName = true
};

string documentationJson = DicomJsonSerializer.Serialize(dcm, docOptions, writeIndented: true);

Pre PS3.18 Kompatibilné webové služby

// 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);

Pre JavaScript Frontend integrácia

DicomJsonSerializerOptions jsOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,  // Easier to work with in JS
    NumberHandling = JsonNumberHandling.AllowReadingFromString  // Native numbers
};

string jsCompatibleJson = DicomJsonSerializer.Serialize(dcm, jsOptions);

Na ukladanie databázy

DicomJsonSerializerOptions dbOptions = new DicomJsonSerializerOptions
{
    UseKeywordsAsJsonKeys = true,  // Better for querying
    WriteKeyword = false,          // Reduce storage size
    WriteName = false
};

string compactJson = DicomJsonSerializer.Serialize(dcm, dbOptions);

Dôležité úvahy

Varovanie o interoperabilite

Neštandardné možnosti môžu narušiť kompatibilitu s niektorými parsérmi 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();

Odporúčanie na dodržiavanie

Ak sa vyžaduje dodržiavanie DICOM PS3.18, použite predvolené nastavenia:

// PS3.18 compliant serialization
string compliantJson = DicomJsonSerializer.Serialize(dcm);  // No custom options

Stream-based serializácia s možnosťami

Pre veľké súbory použite stream-based serializáciu:

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);
}

Dodatočné informácie

  • Zvláštne možnosti ovplyvňujú serializáciu a deserializácie - zabezpečujú konzistentné možnosti pri okrúhlych úlohách údajov.
  • a The WriteName Možnosť pridáva ľuďom čitateľné názvy značky DICOM, ktoré zvyšujú veľkosť JSON, ale zlepšujú čítateľnosť.
  • Niektoré systémy tretích strán môžu vyžadovať špecifické formáty JSON - pozrite sa na ich dokumentáciu pred výberom možností.

Záver

Tento tutoriál ukázal, ako prispôsobiť výstup serializácie DICOM JSON v C# pomocou Aspose.Medical. Konfiguráciou DicomJsonSerializerOptions, môžete nastaviť formát J SON na splnenie špecifických požiadaviek na integráciu a zároveň vyrovnať čitateľnosť, veľkosť a interoperability potreby.

 Slovenčina