json文档如下所示。我想在qml中为它定义一个类,就像typescript中的接口
关键字一样。
{
"ScannerID": "ID",
"Status": 1,
"SuccessRate": 0.999,
"Result": [{
"Codes": "result_11111",
"Positions": {
"CenterX": 10.0,
"CenterY": 10.0,
"Width": 100.0,
"Height": 100.0,
"Angle": 50
},
"Types": "QrCode"
},
//more items
]
}
我试图定义一个qml类在文件ScannerResult.qml
import QtQuick 2.4
QtObject {
property string pScannerID
property int pStatus
property real pSuccessRate
// how to define Result with strong type?
property ? pResult
function load(obj) {
pScannerID = obj.ScannerID
//......
}
}
那就用吧
...
ScannerResult {
id: scannerResult
}
function log(jsonstr) {
let obj = JSON.parse(jsonstr);
scannerResult.load(obj)
console.log(scannerResult.pScannerID) // it works
}
...
但是在“Result”
键下很难处理对象的向量。因为qml不允许在类A下定义类B。
那么有人知道如何定义强类型类来保存qml中从json解析的对象吗?然后我可以在qtcreator中使用自动完成的类。
您可以创建一个属性var
并将其分配为一个列表/数组/向量来保存pResult
。要填充此列表,您可以创建一个“B类”组件
,并在解析JSON对象时动态创建此类的实例。
使用您的代码结构,这里是ScannerResult的更新版本。qml
:
import QtQuick 2.4
QtObject {
property string pScannerID
property int pStatus
property real pSuccessRate
property var pResult: []
function load(obj) {
pScannerID = obj.ScannerID
//... etc
for (var element of obj.Result) {
let resultQtObject = resultComponent.createObject(this, {})
resultQtObject.pCodes = element.Codes
resultQtObject.pTypes = element.Types
resultQtObject.pPositions.pCenterX = element.Positions.CenterX
//... etc
pResult.push(resultQtObject)
}
}
property Component resultComponent: Component {
QtObject {
property string pCodes
property string pTypes
property QtObject pPositions: QtObject {
property real pCenterX
property real pCenterY
property real pWidth
property real pHeight
property int pAngle
}
}
}
}
更新后的log
功能的工作原理如下:
function log(jsonstr) {
let obj = JSON.parse(jsonstr);
scannerResult.load(obj)
console.log(scannerResult.pScannerID) // it works
console.log(scannerResult.pResult[0].pPositions.pCenterX) // it works
}
由于您正在运行时动态创建此组件的实例,QtCreator无法为其提供自动完成建议。正如您提到的向量长度未知,我相信运行时实例化是您唯一的选择,因此没有能够适应自动完成的解决方案。
另一件需要注意的事情是,如果多次运行
log()
/load()
,则需要清理pResult
列表和destroy()
动态创建的对象。
我有以下疑问: 包含
问题内容: 上面的问题是参考上面线程中描述的内容。有这么多的API,可以灵活地返回XML或JSON响应。我想知道是否有一种方法可以自动构造与JSON响应相对应的java bean。 问题答案: 假设您得到一个类似 你想要一个像 使用getter和setters的一种方法是使用JSONGen之类的服务,它将创建该类。您需要使用它 第一 ,并在项目中包含生成的代码。另一种选择可能是动态生成使用了Jav
我有如下代码- 在这里,当app.run(host='127.0.0.1 ',port='80 ')运行时,会给出URL - http://127.0.0.1/getcode。我需要手动打开输入用户名和密码,然后又一个窗口来输入YOB,然后给我这样的东西- 我的问题是,有没有一种方法可以避免手动打开浏览器,输入凭证并获取代码。我们可以用python来解析整个事情吗?
问题内容: 我今天才刚刚开始学习GoLang,我正在尝试构建一个简单的Rest API Web服务器。 这是我希望将每个请求发送到Web服务器的响应结构: 这是我的 articles.go 文件,该文件具有获取数据库中所有文章的功能: 我在这里面临的问题是响应是这样的: {“状态”:200,“描述”:“”,“正文”:“ [{\” id \“:\” 1 \“,\”标题\“:\”第一\“,\”正文\“
本文向大家介绍ubuntu下没有中文输入法的解决办法,包括了ubuntu下没有中文输入法的解决办法的使用技巧和注意事项,需要的朋友参考一下 ubuntu下没有中文输入法的解决办法! 我们在安装虚拟机或者ubuntu系统的时候,常见的是尽管是中文版本的但却没有中文输入法,确实是一件很恼火的事情! 我自己也亲身经历过,特此给大家提供一种方法,很好用的! 我们在安装ubuntu系统的时候,最常见也是我们
我可以在写入之前读取表,并在写入新行之前删除匹配行。 阅读后,我可以筛选应用程序中的行。 我不喜欢这两个解决方案,因为它们似乎太复杂了,性能是一个很大的问题。有更好的办法吗?