JSON/XML 响应

还有一些这样的例子, 为了给外部的应用提供信息, 数据需要按照XML或者JSON格式输出, Ajax应用就是这样的一个例子.

用JSON格式发送Model的内容

如果外部应用使用JavaScript, JSON格式非常容易处理. 在Treefrog框架中处理JSON, 需要Qt 5或者更高版本. 下面是从控制器(controller)发送JSON对象的一个例子.

 Blog blog = Blog::get(10);
 renderJson(blog.toVariantMap());

就这么简单. 生成器生成的模型(model)已经提供了toVariantMap()方法来转换QVariantMap对象. 有个重要的地方需要注意, 这方法将转换一个模型(model)所有的属性, 因此如果需要取消一些信息, 就需要分开实现.

用List格式发送所有的Blog对象

 renderJson( Blog::getAllJson() );

还是这么简单! 然而, 请注意如果在blog数据库中有大量的记录, 可能导致意外结果.

除此之外, 还有下面的方法可以使用. 请查看API 参考.

 bool renderJson(const QJsonDocument &document);
 bool renderJson(const QJsonObject &object);
 bool renderJson(const QJsonArray &array);
 bool renderJson(const QVariantMap &map);
 bool renderJson(const QVariantList &list);
 bool renderJson(const QStringList &list);

用XML格式发送Model的内容

用XML格式发送模型(model)内容与用JSON格式发送模型(model)内容没有多少不同. 使用下面的其中一个方法可实现:

 bool renderXml(const QDomDocument &document);
 bool renderXml(const QVariantMap &map);
 bool renderXml(const QVariantList &list);
 bool renderXml(const QStringList &list);

如果这些输出不符合你的需求, 你可以实现一个新的模版. 如何实现它在视图(view)章节中有描述, 但是不要忘记了在仅在控制器中设置content type.

 setContentType("text/xml")