为什么Qt会拒绝一个有效的JSON?

8
使用Qt-5.0,我有以下JSON字符串。
{"type":"FILE"}

我原本以为fromBinaryData会接受字符串的.toLocal8Bit()作为有效格式,但实际上并不是这样。
QString j = "{\"type\":\"FILE\"}";

auto doc = QJsonDocument::fromBinaryData(j.toLocal8Bit());

doc.isNull() // It's true, means the entry is not valid

我错过了什么吗?


1
你尝试过这样写吗:QByteArray j = "{\"type\":\"FILE\"}";?也许转换不正确。 - Marek R
2
尝试使用QJsonDocument::fromJson(const QByteArray & json, QJsonParseError * error = 0)获取有关问题的信息。 - Marek R
2个回答

12
我对Qt一无所知,所以我在Google上搜索了一下。这是我找到的链接:这里
你现在拥有的是一个字符串,一个文本表示。它不是Qt在内部使用的二进制格式。二进制数据是无法读取的。QJsonDocument::fromBinaryData可以处理这样的二进制数据块。
你想要做的似乎可以通过QJsonDocument::fromJson实现,它需要一个UTF8编码的Json字符串。

8

不要使用fromBinaryData,而是使用相同参数的fromJson。昨天我遇到了完全相同的问题,这种方法对我很有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接