【发布时间】:2022-12-20 17:54:02
【问题描述】:
在qml中,
templist:
[{"product_code":"111111111","product_name":"AAAA"},
{"product_code":"222222222","product_name":"BBBB"},
{"product_code":"33333333","product_name":"CCCC"}]
在 qml 端的以下代码的帮助下,上面的模板列表作为 Qstring 发送到 c++ 端,
function listToString() {
var data = []
for (var i = 0; i < templist.count; ++i) {
data.push(templist.get(i))
}
var keysList = JSON.stringify(data)
console.log(keysList)
**Option A:** backend.request_add(keysList)
**Option B:** backend.request_add(data)
}
在 C++ 方面,
Option A: keysList as multidata
Option B: data as multidata
我把上面的输入转换成
QByteArray br = multidata.toUtf8();
选项A
br =
[{\"product_code\":\"111111111\",\"product_name\":\"AAAA\"},
{\"product_code\":\"222222222\",\"product_name\":\"BBBB\"},
{\"product_code\":\"33333333\",\"product_name\":\"CCCC\"}]
选项B
br = "QObject(0x560034863a60),QObject(0x5600348628b0),QObject(0x7f76000074d0)"
题:在选项 A 中,我已将密钥对转换为 json 格式,然后将其作为 qstring 发送到 C++ 端。 有没有办法直接从此输出中从选项 B 获取密钥对
br = "QObject(0x560034863a60),QObject(0x5600348628b0),QObject(0x7f76000074d0)"
如果我在 qml 端本身进行转换,我会得到选项 A 中列出的所需答案
br = [{"product_code":"111111111","product_name":"AAAA"},
{"product_code":"222222222","product_name":"BBBB"},
{"product_code":"33333333","product_name":"CCCC"}]
我正在尝试使用选项 B 实现相同的期望输出。请指出正确的方向
【问题讨论】:
-
你为什么不使用QVariant将
JavaScript value发送到C++?但是,如果你只能访问一个json字符串,你可以使用QJsonDocument::fromJson函数来解析它。 -
这回答了你的问题了吗? QML: passing JS object to C++ member function
标签: qt qml qjson qjsonobject