DicomJsonSerializerOptions를 사용하여 DICOM JSON 출력을 사용자 정의하는 방법
DicomJsonSerializerOptions를 사용하여 DICOM JSON 출력을 사용자 정의하는 방법
이 튜토리얼은 C#에서 DicomJsonSerializerOptions를 사용하여 DICOM JSON 시리화 출력을 사용자 정의하는 방법을 보여줍니다.
왜 JSON 출력을 사용자 정의합니까?
다른 시스템은 다른 JSON 형식을 필요로 할 수 있습니다.
- 숫자 대신 인간 읽을 수있는 키워드를 사용하십시오.
- 문서에 대한 태그 이름을 포함
- 숫자 값이 어떻게 표현되는지 확인하기
- 특정 제3자 시스템 요구 사항을 충족
원제 : Environment Preparation
- Visual Studio 또는 모든 호환되는 .NET IDE를 설정합니다.
- 새로운 .NET 8 콘솔 애플리케이션 프로젝트를 만드십시오.
- NuGet 패키지 관리자에서 Aspose.Medical을 설치합니다.
사용할 수 있는 시리화 옵션
| 옵션 | 설명 | Impact |
|---|---|---|
UseKeywordsAsJsonKeys | JSON 키로 태그 번호 대신 DICOM 키워드를 사용하십시오. | "PatientName" vs "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단계: 옵션으로 시리얼화
옵션을 Serialize 방법으로 이동합니다.
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 및 WreteName = 진실
{
"00100010": {
"vr": "PN",
"keyword": "PatientName",
"name": "Patient's Name",
"Value": [{ "Alphabetic": "DOE^JOHN" }]
}
}숫자로 처리 = WriteAsString
{
"00280010": {
"vr": "US",
"Value": ["512"]
}
}숫자로 행동 = 허용ReadingFromString♰ 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 통합에 대 한
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);중요한 고려 사항
상호 작용 경고
비 표준 옵션은 일부 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);
}추가 정보
- 사용자 지정 옵션은 serialization 및 deserialisation 모두에 영향을 미칩니다 - 라운드 트리핑 데이터에서 일관된 선택을 보장합니다.
- 그들의
WriteName옵션은 인간 읽을 수 있는 DICOM 태그 이름을 추가하여 JSON 크기를 늘리지만 읽기 가능성을 향상시킵니다. - 일부 제 3 자 시스템은 특정 JSON 형식을 필요로 할 수 있습니다 - 옵션을 선택하기 전에 문서를 확인하십시오.
결론
이 튜토리얼은 Aspose.Medical을 사용하여 C#에서 DICOM JSON 시리화 출력을 사용자 정의하는 방법을 보여줍니다.DicomJsonSerializerOptions를 구성함으로써, 구체적인 통합 요구 사항을 충족시키기 위해 jSON 형식을 조정할 수 있으며 읽기, 크기 및 상호 작용 필요를 균형 잡을 수 있습니다.