ページ

2014年6月17日火曜日

TitaniumでJsonファイルを取得する

Titaniumシリーズ Webサーバに置いてあるJsonを取得するサンプルです。
今回は自分のlocalhost内に置きます。


とりあえずjsonファイルを用意.

data.json
[{"id":7,"en_name":"fukushima","ja_name":"\u798f\u5cf6\u770c"},
{"id":8,"en_name":"ibaraki","ja_name":"\u8328\u57ce\u770c"},
{"id":9,"en_name":"tochigi","ja_name":"\u6803\u6728\u770c"},
{"id":10,"en_name":"gunma","ja_name":"\u7fa4\u99ac\u770c"},
{"id":11,"en_name":"saitama","ja_name":"\u57fc\u7389\u770c"},
{"id":12,"en_name":"chiba","ja_name":"\u5343\u8449\u770c"},
{"id":13,"en_name":"tokyo","ja_name":"\u6771\u4eac\u90fd"},
{"id":14,"en_name":"kanagawa","ja_name":"\u795e\u5948\u5ddd\u770c"}]

続いて実際の読み取りプログラム
var url = "http://localhost/data.json";

var xhr = Ti.Network.createHTTPClient({
    onload: function() {
  var json = JSON.parse(this.responseText);
  for (var i in json) {
   Ti.API.info(json[i]);
  }
 }
});
xhr.open("GET", url);
xhr.send();

これでできます。
意外とあっけないですが1点注意点として遅延読み取りなので
ほかのプログラムがxhr.send()の後に走ります
こちらが覚えておかないと大変です。

次いでにPOSTのサンプル
var url = "http://localhost/data.json"; 
var postData = {
 title: 'data1'
};
var xhr = Ti.Network.createHTTPClient({
    onload: function() {
  var json = JSON.parse(this.responseText);
  for (var i in json) {
   Ti.API.info(json[i]);
  }
 }
});
xhr.open('POST','http://www.myblog.com/post.php');
xhr.send(postData);

基礎的な点だが重要
JSだからJSON.parseを利用できるのが非常に便利です。