QJsonObject如何创建函数

Posted

技术标签:

【中文标题】QJsonObject如何创建函数【英文标题】:QJsonObject how to create function 【发布时间】:2019-03-16 20:10:25 【问题描述】:

我知道如何在 QJsonObject 中创建成员和值。我想要做的是创建一个 Json 函数,在调用时将调用分配的函数。

这可能吗?

【问题讨论】:

JSON 不是 javascript 并且没有“函数”。 JSON 可用于存储代表(JavaScript 或其他)“函数”的 string.. 是的,它在 JavaScript 中确实如此,这就是 JSON 的来源。 这是一个错误的结论。请访问json.org,以便您可以开始传播正确、经过验证的信息。除了与 JS 对象语法的一些相似之处之外,JSON 不是 JavaScript/ECMAScript。 实际用例是什么?有多种方法可以嵌入 JS 引擎。或者也许它无论如何都不需要......另外,考虑目标可能是生成 JavaScript 而不是 JSON。 根据规范 JSON 可以包含对象。对象不仅仅是数据类型的集合,对象还包含方法。 【参考方案1】:

我认为这是不可能的,函数不是有效的 json 值。

有效的 json 值是:字符串、数字、对象、数组、布尔值或 null。

在Qt中,有效的QJsonValues是:bool QJsonValue::Bool, QJsonValue::Double, QJsonValue::String, QJsonValue::Array, QJsonValue::Object, QJsonValue::Null

json spec

【讨论】:

谢谢,我再等一会儿看看有没有人有什么建议。实际情况确实如此。 而且,以“数据交换格式”存储函数并不是一个好主意 ,这取决于我为什么想要它...我正在开发一个引擎,它将对象与脚本合作。 好的,它就像从javascript引擎调用的qt方法(Q_INVOKABLE)或类似的东西? 是的,我想将一个 QJsonObject 返回到我的脚本,它可以工作,我想为调用 C++ 方法的 JSON 分配一个函数。

以上是关于QJsonObject如何创建函数的主要内容,如果未能解决你的问题,请参考以下文章

将 QJsonObject 转换为 Javascript 对象

如何向 qjsonobject 中的键添加多个值

如何修改 QJsonObject

如何将多个 QJsonObject 添加到 QJsonDocument - Qt

如何在 Qt 中使用 QWebChannel 发送 QJsonObject

QtQt中QJsonObject类