DicomJson के साथ DICOM JSON आउटपुट को कैसे अनुकूलित करेंSerializerOptions
यह ट्यूटोरियल दिखाता है कि कैसे C# में DicomJsonSerializerOptions का उपयोग करके DICOM JSON सीरियलिंग आउटपुट को अनुकूलित करने के लिए।
JSON आउटपुट को अनुकूलित क्यों करें?
विभिन्न प्रणालियों को अलग-अलग JSON प्रारूपों की आवश्यकता हो सकती है. अनुकूलन के लिए:
- टैग संख्याओं के बजाय मानव-पढ़ने योग्य कीवर्ड का उपयोग करें
- दस्तावेज़ के लिए टैग नाम शामिल करें
- यह देखने के लिए कि संख्यात्मक मूल्यों का प्रतिनिधित्व कैसे किया जाता है
- तीसरे पक्ष प्रणाली की विशिष्ट आवश्यकताओं को पूरा करना
आवश्यकताएँ: पर्यावरण को तैयार करन
- Visual Studio या किसी भी संगत .NET IDE सेट कर.
- एक नया .NET 8 एप्लिकेशन प्रोजेक्ट बनाएं।
- NuGet Package Manager से Aspose.Medical स्थापित करें।
उपलब्ध सीरियलिंग विकल्प
| Option | Description | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | JSON कुंजी के रूप में टैग संख्याओं के बजाय DICOM कीवर्ड का उपयोग करें | "PatientName" एसएस "00100010" |
WriteKeyword | प्रत्येक टैग ऑब्जेक्ट में कुंजी शब्द फ़ील्ड शामिल करें | Adds "keyword": "PatientName" |
WriteName | प्रत्येक टैग ऑब्जेक्ट में नाम फ़ील्ड शामिल करें | Adds "name": "Patient's Name" |
NumberHandling | नियंत्रण संख्यात्मक मूल्य प्रतिनिधित्व | श्रृंखला या वास्तविक JSON संख्याओं के रूप में संख्याएं |
JSON आउटपुट को अनुकूलित करने के लिए कदम-दर-चरण गाइड
चरण 1: Aspose.Medical स्थापित करें
NuGet का उपयोग करके अपने परियोजना में Aspose.Medical लाइब्रेरी जोड़ें।
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 = सच
{
"PatientName": {
"vr": "PN",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
},
"PatientID": {
"vr": "LO",
"Value": ["12345"]
}
}WriteKeyword और WriteName के साथ = सच
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}संदर्भ के साथ = 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 Integration के बारे में टिप्पणियाँ
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);महत्वपूर्ण विचार
Interoperability चेतावनी
गैर-मानक विकल्प कुछ 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);
}अतिरिक्त जानकार
- कस्टम विकल्प दोनों श्रृंखलाकरण और deserialization को प्रभावित करते हैं - गोल-ट्रिपिंग डेटा के दौरान लगातार विकल्प सुनिश्चित करें।
- The
WriteNameविकल्प मानव-पढ़ने योग्य DICOM टैग नाम जोड़ता है जो JSON आकार में वृद्धि करता है लेकिन पढ़ने की क्षमता में सुधार होता है। - कुछ तीसरे पक्ष के प्रणालियों को विशिष्ट JSON प्रारूपों की आवश्यकता हो सकती है - विकल्पों का चयन करने से पहले उनके दस्तावेजों की जांच करें।
Conclusion
इस ट्यूटोरियल में दिखाया गया है कि कैसे Aspose.Medical का उपयोग करके C# में DICOM JSON सीरियलिंग आउटपुट को अनुकूलित करने के लिए. DicomJsonSerializerOptions को कॉन्फ़िगर करके, आप विशिष्ट एकीकरण आवश्यकताओं को संतुलित करते हुए पढ़ने, आकार, और पारस्परिकता की जरूरतों के साथ-साथ J SON प्रारूप को समायोजित कर सकते हैं.