JSONPath/QML - 获取字符串数组中的元素

标签 json qml jsonpath

所以我正在使用 QML 的 JSONListModel,并且我需要帮助解析此 JSON File

这是一个 Minecraft 服务器查询,可获取在线玩家的姓名。但是,我在将每个节点添加到列表委托(delegate)时遇到问题。

这是我的代码:

ListView {
    JSON.JSONListModel {
        source: "http://minecraft-api.com/v1/players/?server=darkcrest.cf.gs"
        query: "$['players'][*]"
        id: playerNames
    }

    anchors.top: players.bottom
    anchors.topMargin: units.gu(1)

    model: playerNames.model

    delegate: Item {
        Text {
            text: model
        }
    }
}

如您所见,我有一个查询,它是我要查看的元素的 JSONPath。

我想要得到的是球员的名字,一个接一个。我使用通配符来获取所有名称,但是当我将文本的文本设置为 model ("$['players'][0-x]") 时,我得到:

file:///home/brendan/UTouch-Apps/ServerStatus/JSONListModel/JSONListModel.qml:15:32: QML ListModel: append: value is not an object

哪个点指向线:

property ListModel model : ListModel { id: jsonModel }

在 JSONListModel.qml 中。

所以是的,我猜我的道路是错误的。我不知道如何处理数组,例如链接中 JSON 文件中的数组。

如果文件类似于:

{
    players: [
         "name": "Whatever1234",
         "name": "Person987"
    ]
}

我可以这样做

text: model.name

但我不能,因为节点没有名称。它们只是值(value)观。

有人可以帮助我吗?

最佳答案

实际上从看JSONListModel , ListModel::append ,以及您正在解析的 JSON,问题与所报告的 append 相关,位于 line 40 in JSONListModel.qml

jsonModel.append( jo );

在这种情况下,jsonModel是一个ListModel,因此append要求jo是JSON字典,即

myListModel.append( {"cost": 5.95, "name":"Pizza"} )

您的查询有效并且确实返回数组,问题是内部元素不是 ListModel 的有效形式。

有两个选项:

  1. 请求/更改源 JSON 数据以符合名称/值编码,或者,
  2. 请求/修复 JSONListModel 以提供匿名名称或字符串形式的值。

综上所述,对于 #2 来说,看起来已经是 reported in JSONListModel目前尚未解决。

希望这能回答您的问题,并至少为您提供一些 future 的选择。

关于JSONPath/QML - 获取字符串数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21560483/

相关文章:

JavaScript 减少函数问题

javascript - 使用纯Javascript Ajax从本地获取json数据

qt - QTQuick (QML) 中的 FileDialog : Save file under given name

java - JsonPath - 缓存 JSON 然后执行多个查询?

javascript - php 脚本上没有显示 JSON 数据

javascript - 如何同步两个浏览器

qt - 在移动设备上部署 C++ QML 插件的正确方法是什么?

c++ - 从 WebView QML 元素访问 QWebPage 对象

javascript - JSON 路径 : Outputting value plus parent hierarchically

kubernetes - 如何使用 kubectl 和 jsonpath 将 configmap 的内容保存到文件中?