我使用QT 4.8和MinGW 4.8,我的JSON格式化QString看起来像:
{"姓名":" Adam","身体":"肥胖","眼睛": "蓝色"}
如何将此字符串转换为类似字符串:
array [name] = Adam
array [body] =胖了
或
array [0] = Adam
array [1] =胖...
感谢您的帮助。
答案 0 :(得分:2)
如果你可以使用Qt 5.0+,你可以使用Qt核心的原生JSON支持。
E.g。与您的输入
QString s(R"({"name":"Adam","body":"is fat","Eyes":"blue"})"); // raw string
QJsonDocument json = QJsonDocument::fromJson(s.toUtf8());
QJsonObject obj = json.object(); // since your string is an JSON object
QString name = obj.value("name").toString(); // Adam
QString body = obj.value("body").toString(); // is fat
QString eyes = obj.value("Eyes").toString(); // blue
您还可以使用QStringList keys = obj.keys();
或任何您喜欢的内容阅读所有密钥,请查看Qt文档以获取更多信息:http://doc.qt.io/qt-5/qjsondocument.html#details
答案 1 :(得分:0)
在Qt 4.8中,您可以先使用QString::remove()函数删除{}括号和引号。然后,您可以继续QString::split()功能来分隔项目。
QStringList results;
QString str = "{\"name\":\"Adam\",\"body\":\"is fat\",\"Eyes\":\"blue\"}";
str.remove(QChar('{')); // remove the '{' character
str.remove(QChar('}')); // remove the '}' character
str.remove(QChar('\"')); // remove the '"' character
QStringList pairs = str.split(","); // separate by comma
//
for (int i = 0; i < str.count(); i++)
{
QStringList pairItems = pairs[i].split(":");
results.append(pairItems[1]);
}
在这种情况下,QStringList“results”看起来像:results [0] =“Adam”,results [1] =“is fat”等等......
这是您拥有的选项之一。当然有更优雅的解决方案,但这个很简单。我希望它可以帮助你。
编辑另请注意,此解决方案无法帮助您处理一些复杂的JSON输出。在这种情况下,您应该使用一些其他选项。
答案 2 :(得分:0)
您似乎正在尝试解析JSON格式。我从其他答案中看到,您正在使用的Qt 4.8中不支持本机JSON解析,因此您应该能够使用http://www.json.org上列出的任何C库进行JSON格式解析。