【Qt】Json parser


目前有許多種選擇。但須注意是否完全支援UTF8。

  1. qt-json http://nilier.blogspot.com/2010/08/json-parser-class-for-qt.html
  2. Qjson http://qjson.sourceforge.net/
  3. JsonQt http://gitorious.org/JsonQt/

目前採用第一個方式,因為第一個方式只需要在原始專案中加入兩個檔案,看起來較為方便。

【目的】

以 AJAX Language API for Translation and Detection 為範例,Translation API 所回傳的結果就是 Json 格式。
假設我們送出下面命令給 Google Translation ,

http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello&langpair=en|ru  
所回傳的結果會是
{"responseData": {"translatedText":"привет"}, "responseDetails": null, "responseStatus": 200}
看起來的結構會像是下面圖形,請住義最後 hello 翻譯成俄文的字串會在 responseData的translatedText。

image

【程式】

下面只擷取重要程式,基本上UI會有一個 push button 用來顯示從 Json 抓出來的字串。 
#include <qDebug>
#include "json.h"

QString json="{\"responseData\" : {\"translatedText\":\"привет\"}, \
               \"responseDetails\" : null, \
               \"responseStatus\" : 200}";

bool ok;
QVariantMap result = Json::parse(json, ok).toMap();
if(!ok) {
    qFatal("An error occurred during parsing");
    exit(1);
}

QVariantMap responseData = result["responseData"].toMap();
QString translatedText= responseData["translatedText"].toString();

ui->pushButton->setText(QString::fromUtf8(translatedText.toStdString().c_str()));
qDebug() << "translatedText:" << QString::fromUtf8(translatedText.toStdString().c_str());
qDebug() << "responseDetails:" << result["responseDetails"].toBool();
qDebug() << "responseStatus:" << result["responseStatus"].toInt();

【結果】

 image

【問題】

  • 程式也將結果送到 QDebug(),但不知為何привет會變成亂碼,但如果印出中文是沒問題的。
    image

【上面三種方式的個別補充說明】

  1. JSON parser class for Qt
    http://nilier.blogspot.com/2010/08/json-parser-class-for-qt.html
  2. Qjson http://qjson.sourceforge.net/usage.html
  3. JsonQt
    http://git.fredemmott.co.uk/?p=JsonQt;a=blob;f=tests/README.txt;h=4ebcf735ccbff8556914ed687b27f065dfb4a229;hb=HEAD

【其他】

【Qt】HTML5


Qt 利用 QWebKit 來顯示 HTML 網頁,目前還在研究 Html5  上面的支援程度。
目前可以確定audio/video都沒有支援。

【Demo】

【Lingoes】靈格斯詞霸


Lingoes http://www.lingoes.net/

【目的】

  • 安裝英翻中詞典。
  • 俄翻英。

【環境】

  • Windows Vista。

【步驟】

  1. 下載並安裝 Lingoes。
    image 
  2. 安裝完畢之後就可直接使用。不過不知為何,螢幕取詞 功能動作看起來時有時無,所以我順便
    勾選了剪貼簿取詞 功能。將單字複製到剪貼簿,就會出現翻譯。
    image
  3. 建議下載繁體版的牛津英語詞典。請打開 Lingoes | 辭典管理 | 從Lingoes下載辭典。
    image
  4. 就會連到下載頁面,此時請選 牛津英語詞典 繁體版。下載完後直接打開就會匯入該詞典。
    image
  5. 建議 辭典安裝清單、索引組和取詞組 留下 牛津高階英漢雙語辭典 即可。
    image
  6. 就如同第二個步驟的附圖一樣,可以看到英翻中的結果。
  7. 俄翻英的話目前提供下面這些,請由下面的Hyperlink去找。
    http://www.lingoes.net/en/dictionary/index.html
     image

【ComicShelf】颱風天在家看漫畫


ComicShelf http://www.comicshelf.com/cht/index.php

除了好讀網站(http://www.haodoo.net/)外,另外一個不錯的精神糧食來源。

【使用】

  1. 由於是綠色軟體,下載解壓後直接點選 ComicShelf.exe。
    初始化設置,語言可選 中文(繁體)
    image
  2. 假設要搜尋 Jo Jo 冒險野郎 的話,進入 漫畫瀏覽器 | 漫畫搜索 ,在 漫畫名 這邊打入 Jo
    這個關鍵字,就會看到 搜索站 所列出的結果。這邊看到找到 JOJO奇妙冒險這部。
    image 

【其它】

  • 新動慢速度還蠻快的。
 

Ed32. Copyright 2008 All Rights Reserved Revolution Two Church theme by Brian Gardner Converted into Blogger Template by Bloganol dot com