Chinaunix首页 | 论坛 | 博客
  • 博客访问: 535777
  • 博文数量: 71
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 159
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-13 12:37
个人简介

aaaaaaaaa

文章分类

全部博文(71)

文章存档

2013年(71)

我的朋友

分类: 嵌入式

2013-07-24 17:39:29

Qt支持Javascript脚本的解析,而Json就是JavaScript 对象表示法,Json 文本格式在语法上与创建 JavaScript 对象的代码相同。所以在Qt中可以通过脚本解析的方式来解析JSon格式的数据。有关JSon格式的说明,请。

由于在Qt是通过脚本解析的方式来解析Json数据的,所以需要在.pro工程文件中添加下面语句:

QT += script

不带嵌套数组JSon格式的解析

简单的格式的Json数据没有嵌套数组,形式譬如下面的这样:

{ "firstName":"John" , "lastName":"Doe" }

可以通过类似与下面的代码解析:

1
2
3
4
5
6
7
8
9
10
QString jsonData = "{\"firstName\":\"John\" , \"lastName\":\"Doe\" }";
QScriptValue value;
QScriptEngine engine;
value = engine.evaluate("value = " + QString(jsonData));
QScriptValueIterator it(value);
while (it.hasNext())
{
    it.next();
    qDebug() << it.name() << ": " << it.value().toString();
}

带有嵌套数组JSon格式的解析

有的Json带有嵌套数组,形式如下:

{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}

QScriptValue类中带有property方法,接受的参数是Json数据中的键,返回相应的值,所以类似于上面的JSon数组,可以通过下面的代码解析。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
QString json = "{employees:[{ \"firstName\":\"John\" ,
                              \"lastName\":\"Doe\" },
                             {\"firstName\":\"Anna\" ,
                              \"lastName\":\"Smith\"}]}";
QScriptValue value;
QScriptEngine engine;
value = engine.evaluate("jsonvalue = " + json);
 
if (value.property("employees").isArray())
{
  QScriptValueIterator it(value.property("employees"));
  while (it.hasNext())
  {
      it.next();
      qDebug() << it.value().property("firstName").toString();
      qDebug() << it.value().property("lastName").toString();
   }
}
更多参考:《》
阅读(1838) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~