IRISでPythonを扱う時に、既存の%DynamicObject型の値をそのまま利用したいと思うのですが、Embedded Pythonは自動で%DynamicObjectをdict型にはしてくれません。親和性はとてもあるのですが。。。
そこで、既存プログラムで生成した%DynamicObject型の値をPython側、特に外部のPythonファイル側でdict型を期待している関数に利用するにはどうすれば良いか。
少しスマートではありませんが、%DynamicObjectを一旦JSON文字列に置き換え、Embedded Python 内でJSON文字列からdict型に変換する方法しかないようです。
以下が、その手順です。
Set data = {}
Set data.name = "hanako"
Set data.age = 20
Do ..testPython(data)
ClassMethod testPython(arg As %DynamicObject) [ Language = python ]
{
import json
import pythonfile
data = json.loads(arg._ToJSON())
pythonfile.test(data)
}
pythonfile.py
def test(arg).png)







.jpg)




.png)