スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--------(--)
 

jsonファイルの扱いでハマった件

2011.1/13

JSONファイルをご存知ですか?自分も詳しくはわかりませんが,javascriptで扱いやすくXMLよりも簡単な形式で書くことができます。たとえば

/*sample1.json*/
[
   {  " ID " : 1 ,
       " name " : "Tani"
   },
   {  " ID " : 2 ,
       " name " : "Maki"
   }
]

のように書くことができます。javascript(jqueryを使っています)から読み込むときはたとえば

/*sample1.js*/
$(function(){
  $.get( " URL/sample1.json " , function(json){
     var data = eval (" ("  +  json  +  ") ") ;
     for ( var i = 0; i < data.length; i ++) {
        $( " div#sample1 " ).append("<p>" + data[ i ].id + " : " + data[i].name + "</p>") ;
    }
  });
});

こんな感じかな。そうすると↓のようになります。

<div id="sample1">
   <p>1 : Tani</p>
   <p>2 : Maki</p>
</div>


JSONファイルから読み込んだ内容は変数jsonに格納し,さらに配列として変数dataに格納されます。eval()してjavascriptで扱えるようにしているらしいです。それと添字は0からスタートです。ちなみに連想配列も使えます。


それで自分がハマったところなのですが,ここらで切っておきますね。


続きは「続きを読む」をクリックで。


①まずはOperaやgoogle chromeではローカル環境(デスクトップに置いてあるhtmlファイルをブラウザで開く)で$.get()がうまく機能しないことです。firefoxやIEだと表示されるのですが,前の2つではダメでした。ちゃんとサーバーにアップしてからだと表示されました!


②次は「,」です。↓なのですが

/*sample1.json*/
[
   {  " ID " : 1 ,
       " name " : "Tani"
   } ,
   {  " ID " : 2 ,
       " name " : "Maki"
   } ,   /* ←この赤い点です。 */
]

上の赤い点があるとIEではもう1つデータがあると勘違いしてしまいます。他のブラウザはそんなことないのですが,ということで間違えて書かないようにしないといけません。


③次は「イコール」です。

/*sample1.js*/
$(function(){
  $.get( " URL/sample1.json " , function(json){
     var data = eval (" ("  +  json  +  ") ") ;
     for ( var i = 0; i <= data.length; i ++) {   /* ←このイコールです。 */
        $( " div#sample1 " ).append("<p>" + data[ i ].id + " : " + data[i].name + "</p>") ;
    }
  });
});

jsonファイルを取得すると配列になるので添字は0からはじまります。ということでイコールをつけてしまうと1つ多くなってしまいます。これはハマりました。なぜかというとIE以外ではイコールがあっても実行できるからです。その代わりFirebugには「1件のエラー」と表示されます。そのときのエラー内容は

「data[i] is undefined」

のようになると思います。これ普通に読んだら

data[i]が定義されていません。

ってなります。なので「var data = eval (" ("  +  json  +  ") ") ;」これにエラーがあるかどうか考えたり,実際はもっと長いプログラムでエラーが起きたのでfor文の前でのエラーを探してしまいました。


実際は

「for文の繰り返し回数が1回多くて最後のiが存在していないのでdata[i]がありません。」ってことです。このミスを見つけるのに4時間かかったってのorz


今日はこんなとこで。ではでは。
スポンサーサイト
2011-01-12(Wed)
 

コメントの投稿

非公開コメント


MAxUraのプロフィール

MAxUra

名前:MAxUra
年齢:学生です。
趣味:ネットサーフィン
           DVD鑑賞
特徴:さまぁ~ずファンです
          Linux初心者です

Win,Linux,フリーソフト関連のメモを載せる予定です

 現在はWindows7 64bitを使用しています(2010年3月までは自分のPCはvistaなのでフリーソフトは基本vistaで動作済みってことになります)

コメント・相互リンク募集中です。

紹介してほしいソフトなどありましたら気軽にコメントやメールください♪

ブログ内検索フォーム
プログラミング関係
Black Cat Clock
メールフォーム

名前:
メール:
件名:
本文:

おすすめブラウザ
Firefoxをいつも使ってます
Firefox ブラウザ無料ダウンロード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。