Tcl:有没有更有效的方法来检索从JSON转换的字典中的嵌套值?

时间:2020-10-14 19:20:15

标签: json dictionary tcl

我想知道是否有更有效的方法来检索与输入键配对的“ id”值7777777。我正在使用Tcllib json包。

package require json

set json {
{
    "resourceType": "Bundle",
    "id": "11111111-22222-3cc3-4444-d5d555dd5555",
    "type": "searchset",
    "total": 1,
    "link": [
        {
            "relation": "self",
            "url": "https://selfurl.com/a54"
        }
    ],
    "entry": [
        {
            "fullUrl": "https://test.sandboxtest.com/e2/1a11aaa1-22bb-3333-4444dd-e5e5ee55ee55/Patient/lastname=test",
            "resource": {
                "resourceType": "Patient",
                "id": "7777777",
                "meta": {
                    "versionId": "5",
                    "lastUpdated": "2020-10-08T18:26:31.000Z"
                }
            }
        }
    ]
}
}

set jsDict [json::json2dict $json]
set entryVal [dict get $jsDict entry]

if {[regexp {Patient id ([^ ]+)} $entryVal match idVal]} {
    puts $idVal
}

1 个答案:

答案 0 :(得分:2)

您应该对JSON数组使用列表操作。像这样:

puts [dict get [lindex [dict get $jsDict entry] 0] resource id]

或者,您也可以直接使用rl_json从$json中提取数据:

puts [rl_json::json get $json entry 0 resource id]