Qt 如何将JSON格式的QString转换为数组

Qt 如何将JSON格式的QString转换为数组,qt,qstring,Qt,Qstring,我使用的是QT 4.8和MinGW 4.8,我的JSON格式的QString如下所示: {“姓名”:“亚当”,“身体”:“肥胖”,“眼睛”:“蓝色”} 如何将此字符串转换为类似的内容: 数组[name]=Adam 数组[体]=是脂肪 或 数组[0]=Adam 数组[1]=是fat 谢谢你的帮助。如果你能使用Qt5.0+你可能会使用QtCore的原生JSON支持 例如,你的投入 QString s(R"({"name":"Adam","body":"is fat","Eyes":"blue"})"

我使用的是QT 4.8和MinGW 4.8,我的JSON格式的QString如下所示:

{“姓名”:“亚当”,“身体”:“肥胖”,“眼睛”:“蓝色”}

如何将此字符串转换为类似的内容:

数组[name]=Adam

数组[体]=是脂肪

数组[0]=Adam

数组[1]=是fat


谢谢你的帮助。

如果你能使用Qt5.0+你可能会使用QtCore的原生JSON支持

例如,你的投入

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文档以了解更多信息:

在Qt 4.8中,您可以通过使用函数从去掉{}方括号和引号开始。然后,您可以继续使用该功能来分离项目

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结果;
QString str=“{\'name\':\'Adam\',\'body\':\'is fat\',\'Eyes\':\'blue\'”;
str.remove(QChar(“{”);//删除“{”字符
str.remove(QChar('}');//删除'}'字符
str.remove(QChar(“\”);//删除“%”字符
QStringList pairs=str.split(“,”)//用逗号分隔
//
对于(int i=0;i
在本例中,QStringList“results”看起来像:results[0]=“Adam”,results[1]=“is fat”等等

这是你的选择之一。当然还有更优雅的解决方案,但这一个非常简单。我希望它能帮助你


编辑:还要记住,此解决方案不会帮助您处理一些复杂的JSON输出。在这种情况下,您应该使用建议的其他一些选项。

似乎您正在尝试解析格式。我从其他答案中看到,您使用的Qt 4.8不支持本机JSON解析,因此您应该能够使用上列出的任何C库进行JSON格式解析。

它是JSON字符串吗?您不能升级到Qt 5.0吗?它有本地JSON支持巫师,使它相当简单,如果不是,也许可以使用一些外部C++的JSON-LIB来解析输入。当然你可以自己解析这个字符串,但是为什么…这个解决方案让我很满意。感谢您的帮助。另一个类似的解决方案是将
QString::split
与正则表达式一起使用。在这种情况下,只有一个命令。此解决方案不包括嵌套对象。我更喜欢使用第三方C库进行JSON解析。请参阅