2011年5月3日 星期二
Java 的 JSON lib: json-simple
似乎 Java guy 偏好 XML 的做法, JSON 相關說明好像比較少, 像 Python 2.6 後直接內建 json, 2.5 前也有公認的 simplejson。找了一會兒, 看起來 json-simple 最好用, 輕巧簡單。官網還有搜集一些 blog 提到 json-simple 的文章, 其中這篇 A Review of 5 Java JSON Libraries 還不錯, 列了表格說明作者重視的項目, json-simple 看起來的確不錯。我試用後也覺得頗滿意的, JSON 的 object 直接對到 Map-like 的 JSONObject, list 對到 List。和 Python 用起來的差別, 就是取出資料後自己要轉型成對應的型別, 不過對 Java 來說, 似乎也是理所當然的事。
2010年5月6日 星期四
制作簡單的 API: 在 Django 中回傳 JSON
將 HttpResponse 的 mimetype 設為 json 即可, 程式如下:
設好 urls.py 後 (/myapi/), 就能用 jQuery 的 $.ajax 輕鬆地 call /myapi/ 取得 JSON ( callback function 的參數會是 JavaScript object, 不用再呼叫 JSON.parse )。為了減少出錯的機會, 我將 ajax 的參數 aysnc 設為 false。
回傳值是 JSON 有許多好處, 除方便用 AJAX 拿資料外, 也方便寫 unit test:
附帶一提, 有人寫了個 decorator 將一般的 view 轉成回傳 json, 目前沒這需求, 留著備忘。
# views.py
def myapi(request):
data = {
'name': 'Alice',
...
}
return HttpResponse(simplejson.dumps(data), mimetype='application/json')
設好 urls.py 後 (/myapi/), 就能用 jQuery 的 $.ajax 輕鬆地 call /myapi/ 取得 JSON ( callback function 的參數會是 JavaScript object, 不用再呼叫 JSON.parse )。為了減少出錯的機會, 我將 ajax 的參數 aysnc 設為 false。
回傳值是 JSON 有許多好處, 除方便用 AJAX 拿資料外, 也方便寫 unit test:
class MyApiTest(django.test.TestCase):
data = { ... }
response = self.client.post('/myapi/', data)
self.assertEqual(200, response.status_code)
expected = { ... }
self.assertEqual(expected, simplejson.loads(response.content))
附帶一提, 有人寫了個 decorator 將一般的 view 轉成回傳 json, 目前沒這需求, 留著備忘。
訂閱:
文章 (Atom)
在 Fedora 下裝 id-utils
Fedora 似乎因為執行檔撞名,而沒有提供 id-utils 的套件 ,但這是使用 gj 的必要套件,只好自己編。從官網抓好 tarball ,解開來編譯 (./configure && make)就是了。 但編譯後會遇到錯誤: ./stdio.h:10...
-
UbuntuCompilationGuide – FFmpeg 說明如何在 Ubuntu 上安裝 ffmpeg 並包含 libx264 (支援 H.264)。全部安裝和移除的指令都有了, 超方便的。實測的結果, 用 libx264 壓出來的檔案又小畫質又好, 是必要的元件。 ...
-
最近有需求讀 C/C++ 的東西, 試了 ctags, cscope 覺得不理想。問了一下收到許多回應 ( G+ 、 plurk ), 真是太感謝大家了, 減少入門摸索的時間。 試用的感想如下: grep 優點 : 好上手 缺點 : 陽春 安裝 : 內建於 L...
-
最近被迫在短時間內學會 strace、gdb 這些之前一直用不到的重兵器, 都還不熟練就是了。剛好使用 hgsubversion 時有些困擾, 雖說它和 svn 整合得很好, 無縫接好 pull / push , 但它不會顯示 mercurial 對應到的 svn 版本, 平...