4 个版本

0.7.1 2024 年 8 月 13 日
0.7.0 2024 年 4 月 25 日
0.1.1 2023 年 11 月 21 日
0.1.0 2023 年 7 月 23 日

#1641解析器实现

Download history 169/week @ 2024-04-20 72/week @ 2024-04-27 44/week @ 2024-05-04 113/week @ 2024-05-11 32/week @ 2024-05-18 13/week @ 2024-05-25 16/week @ 2024-06-01 34/week @ 2024-06-08 24/week @ 2024-06-15 116/week @ 2024-06-22 173/week @ 2024-06-29 120/week @ 2024-07-06 74/week @ 2024-07-13 117/week @ 2024-07-20 64/week @ 2024-07-27 44/week @ 2024-08-03

314 每月下载量
4 个crate中使用(通过 dicom-dump

MIT/Apache

2.5MB
33K SLoC

DICOM-rs json

crates.io Documentation

该子项目面向 DICOM-rs 生态系统用户。它提供了将 DICOM 数据序列化为 JSON 以及将 JSON 反序列化为 DICOM 数据的功能,符合 DICOM 标准第 18 部分 F 章节的内容

该crate是DICOM-rs项目的一部分。


lib.rs:

DICOM JSON 模块

该库提供将 DICOM 数据序列化为 JSON 以及将 JSON 反序列化为 DICOM 数据的功能,符合 DICOM 标准第 18 部分 F 章节的内容

使用现成的函数 to_stringto_value 是序列化的最简单路径。或者,可以使用 DicomJson 包裹类型以获得对序列化或反序列化数据方式的更多控制,它通过 Serde 实现序列化和反序列化。

示例

将对象序列化为标准的 DICOM JSON

let obj = InMemDicomObject::from_element_iter([
    InMemElement::new(tags::SERIES_DATE, VR::DA, "20230610"),
    InMemElement::new(tags::INSTANCE_NUMBER, VR::IS, "5"),
]);

let json = dicom_json::to_string(&obj)?;

assert_eq!(
    json,
    r#"{"00080021":{"vr":"DA","Value":["20230610"]},"00200013":{"vr":"IS","Value":["5"]}}"#
);

将 DICOM JSON 反序列化回内存中的对象

let json = r#"{
    "00080021": { "vr": "DA", "Value":["20230610"] },
    "00200013": { "vr": "IS", "Value":["5"] }
}"#;
let obj: InMemDicomObject = dicom_json::from_str(&json)?;

使用 DicomJson 包裹类型以获得对序列化或反序列化数据方式的更多控制

let dicom_obj = dicom_json::DicomJson::from(&obj);
let serialized = serde_json::to_value(dicom_obj)?;

assert_eq!(
    serialized,
    serde_json::json!({
        "00080021": {
            "vr": "DA",
            "Value": [ "20230610" ]
        },
        "00200013": {
            "vr": "IS",
            "Value": [ "5" ]
        }
    }),
);

依赖关系

~7–14MB
~142K SLoC