从JObj创建IronPython字典

2024-10-01 17:38:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图为IronPython的脚本范围设置一个变量。我想用JObject作为Python字典。这就是我试过的。

ScriptScope scope = engine.CreateScope();

JObject childObject = new JObject();
childObject["child1"] = "test";
JObject dataObject = new JObject();
dataObject["key1"] = childObject;

scope.SetVariable("metaData", dataObject);

我可以使用metaData变量,也可以通过调用metaData["key1"]来使用第一个键。但是当我试图通过调用metaData["key1"]["child1"]来获取下一个值时,我得到了以下错误消息:Can not convert from System.String to System.Object.我如何才能像使用普通Python字典一样使用JSON对象呢?JSON对象的深度会有所不同,因此我需要灵活处理。


Tags: 对象脚本jsonnew字典systemscopemetadata
1条回答
网友
1楼 · 发布于 2024-10-01 17:38:32

对我来说很好。

var engine = Python.CreateEngine();
dynamic scope = engine.CreateScope();
scope.metaData = new JObject
{
    ["key1"] = new JObject
    {
        ["child1"] = "test",
    },
};
engine.Execute(@"
print metaData['key1']['child1']
foo = metaData['key1']
foo['bar'] = 'baz'
print metaData
", scope);

打印:

^{pr2}$

这取决于您在脚本中对对象的操作。

小心幕后,这仍然是一个普通的旧东西json.netJObject,您不能向其添加任何值。例如,您不能添加IronPython^{cd2>}。它必须是某种可以或隐式转换为^{cd3>}的东西。

相关问题 更多 >

    热门问题