- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在我的 qt5 应用程序中从 pusher.com WebSocket 获取一些 json 数据,我正在努力解析他们发送的“序列化”json。我终于确定了问题所在,但不确定如何解决:
我做了一个小测试程序来演示:
QString str1 = "{\"event\":\"message\",\"data\":\"{\\\"channel\\\":\\\"trade.3\\\",\\\"trade\\\":{\\\"tradeid\\\":\\\"86364698\\\",\\\"timestamp\\\":1425420405,\\\"datetime\\\":\\\"2015-03-03 17:06:45 EDT\\\",\\\"marketid\\\":\\\"3\\\",\\\"marketname\\\":\\\"LTC\\\\/BTC\\\",\\\"quantity\\\":\\\"0.24680554\\\",\\\"price\\\":\\\"0.00694988\\\",\\\"total\\\":\\\"0.00171527\\\",\\\"type\\\":\\\"Buy\\\"}}\",\"channel\":\"trade.3\"}";
QString str2="{\"event\":\"message\",\"data\": {\"channel\":\"trade.3\",\"trade\":{\"tradeid\":\"86364698\",\"timestamp\":1425420405,\"datetime\":\"2015-03-03 17:06:45 EDT\",\"marketid\":\"3\",\"marketname\":\"LTC\\/BTC\",\"quantity\":\"0.24680554\",\"price\":\"0.00694988\",\"total\":\"0.00171527\",\"type\":\"Buy\"}},\"channel\":\"trade.3\"}";
QJsonDocument doc1 = QJsonDocument::fromJson(str1.toUtf8());
QJsonDocument doc2 = QJsonDocument::fromJson(str2.toUtf8());
qDebug("%s", qPrintable(QString("Str1: \"%1\"").arg(str1)));
qDebug("%s", qPrintable(QString(doc1.toJson())));
qDebug() << "-----------------------------------------------------------";
qDebug("%s", qPrintable(QString("Str2: \"%1\"").arg(str2)));
qDebug("%s", qPrintable(QString(doc2.toJson())));
这个输出:
Str1: "{"event":"message","data":"{\"channel\":\"trade.3\",\"trade\":{\"tradeid\":\"86364698\",\"timestamp\":1425420405,\"datetime\":\"2015-03-03 17:06:45 EDT\",\"marketid\":\"3\",\"marketname\":\"LTC\\/BTC\",\"quantity\":\"0.24680554\",\"price\":\"0.00694988\",\"total\":\"0.00171527\",\"type\":\"Buy\"}}","channel":"trade.3"}"
{
"channel": "trade.3",
"data": "{\"channel\":\"trade.3\",\"trade\":{\"tradeid\":\"86364698\",\"timestamp\":1425420405,\"datetime\":\"2015-03-03 17:06:45 EDT\",\"marketid\":\"3\",\"marketname\":\"LTC\\/BTC\",\"quantity\":\"0.24680554\",\"price\":\"0.00694988\",\"total\":\"0.00171527\",\"type\":\"Buy\"}}",
"event": "message"
}
-----------------------------------------------------------
Str2: "{"event":"message","data": {"channel":"trade.3","trade": {"tradeid":"86364698","timestamp":1425420405,"datetime":"2015-03-03 17:06:45 EDT","marketid":"3","marketname":"LTC\/BTC","quantity":"0.24680554","price":"0.00694988","total":"0.00171527","type":"Buy"}},"channel":"trade.3"}"
{
"channel": "trade.3",
"data": {
"channel": "trade.3",
"trade": {
"datetime": "2015-03-03 17:06:45 EDT",
"marketid": "3",
"marketname": "LTC/BTC",
"price": "0.00694988",
"quantity": "0.24680554",
"timestamp": 1425420405,
"total": "0.00171527",
"tradeid": "86364698",
"type": "Buy"
}
},
"event": "message"
}
显然第二个版本是我的目标。有没有一种方法可以轻松转换输入数据,或者我是否必须尝试使用自己的转换器函数?
编辑:以下是针对这个特定数据样本的技巧......但我仍然认为必须有更合适的方法来转换这类东西......
str1.replace("\\\"", "\"");
str1.replace("\\\\", "\\");
str1.replace("\"{", "{");
str1.replace("}\"", "}");
最佳答案
您的“数据”实际上是另一个 JSON 文档。
只需从 doc1.object()["data"].toString(); 创建另一个 QJsonDocument;
但很明显“数据”可以有其他东西,在这个例子中它是一个 json 文档。
祝你好运!
关于c++ - 如何将pusher.com的 "serialized"json解析成qt5 QJsonDocument?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28844116/
我正在尝试学习如何使用 JSON 和 Qt 我已经处理过,但我在从文件中获取 QJsonDocument 时遇到了问题。文件可以正确打开,我也可以使用 qDebug() 查看文件的内容,但是从该文件创
我在使用 QJON 对象解析 JSON 时遇到了问题。 我读取了一个在资源文件中引用的我的 json 文件,读取内容并尝试从我得到的 QString 初始化一个 QJSONDocument。而且它似乎
我正在尝试学习如何使用 JSON 和 Qt JSON 类。例如,我想创建一个简单的 QJsonDocument,将其保存到文件中,将其加载到不同的 QJsonDocument 中并比较结果。 我设法创
我想将多个 QJsonObject 添加到 QJsonDocument。这可能吗? 应该是这样的: [ { "objID": "obj1" //... Some
下面是简单的代码: QByteArray ba = jdoc.toBinaryData(); QJsonDocument jdoc2; jdoc2.fromBinaryData(ba); qDebu
在我的项目中,我使用 QJsonDocument::fromJson() 从一个 json 文件中读取。这很好用,但是当我尝试使用 toJson() 将 QJsonDocument 写回文件时,一些
我已经尝试过这段代码并且有效,但我不明白如何获取 json 并使用 Qt 转换为数组或列表。我的代码: QEventLoop eventLoop; QNetworkAccessManager mgr;
我有一个二进制字符串,其中包含我需要解析的 JSON 对象。但是当我从它创建 QJsonDocument 时,我得到一个空文档。创建后我尝试读取错误代码,但 QJsonParseError 包含“No
我有一个字符串,它包含(不是是)JSON 编码数据,如本例所示: foo([1, 2, 3], "some more stuff") | | start end
我制作了转换 QList 的类(非常大的列表)转换为 JSON 字符串,但它会生成超大文本。 代码如下: QJsonObject rootObject; rootObject.insert("Test
我想向 QJsonDocument 添加多个 QJsonObject 而不是 QJsonArray。这可能吗?它应该看起来像这样: { "Obj1" : { "objID":
我在我的 qt5 应用程序中从 pusher.com WebSocket 获取一些 json 数据,我正在努力解析他们发送的“序列化”json。我终于确定了问题所在,但不确定如何解决: 我做了一个小测
我有兴趣了解如何使用 Qt 的 QJsonDocument 来解析来自简单嵌套 JSON 的所有条目(因为我刚刚开始研究这个)。 嵌套的 json 示例: { "city": "London"
我正在使用 Qt5。我正在尝试从 json 对象获取值。这是我试图从中获取数据的 json 对象的样子: { "success": true, "properties": [
我有以下 JSON 结构: "{ "dateTime": "02/06/2016 - 13:01:06", "event": 12344, "eventOwner": "1",
void test() { QFile f("..\\data\\NAVHistory2.txt"); if (!f.open(QFile::ReadOnly)) {
我是一名优秀的程序员,十分优秀!