愛車:マツダアテンザ
Webを中心とした、ビジネス&テクノロジーに関する思いつき
by F-shin
[ このサイトについて ] [ F-shinについて ] [ トップ ]
author:えふしん
photo_20.jpg
藤川真一について


モバツイの中の人
人の良いジョンカビラと言われます。ソフト哲学者を目指します。
AMN sponsor rolls
ツイッターやるなら
for iPhone App
Google Friend Connect
このカテゴリ[Web系]の最新30件
そろそろモバツイがEC2に移転した話でも書くとするか。 とりあえずやってみて、ダメならすぐ手を変える体制重要 メールって盗聴されますか? 「正しい反論を得る」ことは重要なネットリテラシーの一つ 人は同じことを繰り返す。けど、残念なのかよくわからない。 楽天アフィリエイトが儲かる理由 「ブレイクするっていうのはバカに見つかるってこと」はプルメディアであるネットで成り立つのか。 RT:日本のネットが「残念」なのは、ハイブロウな人たちの頑張りが足りないから RSSと引越しとパーマリンク ツイッターは一期一会の精神で楽しむ なんだこの楽天叩き。 記事未満〜エンジニアの未来サミットとか。 ネット世論を殺すのは簡単。 Web身の回り告知系 個別アーカイブの記事に記事の文字数、行数表示をつけた。 DH時代のFlashがインデックスされてるのを見つけた。 それドロップシッピングを語る業者に騙された、だけでしょ? はてブの関連エントリーはスゴイ。 ニコニコ動画がiPhoneアプリで登場! Doblogサービスが終わりだそうで。 Web2.0は死んだとか言うbuzzwordに影響されてる開発者は、自分の開発手法が当たり前のようにWeb2.0化していることに気がつくべき。 オレ様最適で炎上対象になると、全体最適の的外れレスがつきやすい モバツイでのDonation体験談 イケてないモバイル広告 経営者にとってのサーバサイド技術選び はてブがMac OperaでBad Requestになる件について 言論の質、blogの質 XMLが描いた世界は実現するのか。 年収とイキイキ評価とのギャップ 日本人にとってのTweetってはてブじゃないのかなぁ。
[このカテゴリをもっと見る]
F's Garage関連
Powered by
Movable Type
■お仕事情報
カラメルアフィリエイト始めました
カラメルアフィリエイト
一緒にペパボで働きませんか?カラメル開発者募集中です!

July 31, 2007

Flashにjsonのデータを読ませたくて、json.asを使ってネットの情報を参考にして読んでみたが、Bad Stringであったり、謎のBad objectとかいうエラーが出てパース失敗しませんか?

あちこち見て、僕が調べた範囲でのやりかた、

1.json.asをincludeする。
2.PHPとかから、「json_var = {JSONのデータ文字列}」の形でアウトプットする。
3.LoadVarsオブジェクトのonLoadイベントで、this.json_varで取れた文字をjson.asでパースする


終わり
 ・
 ・
 ・
コレ文字列によっては失敗しません?


僕もFlash久々だったので、そのまま鵜呑みにしてハマりました。

調べるとネット上では、サーバサイドで文字列を事前に"とか&を数値参照に変換しないとダメよ、なども出てくるので変換した。


「あれーJSONって、文字をUTF-8にさえしておけば、そういうのを勝手にやってくれるから、そのままGETで送受信できるんじゃないのー?」

という疑問符を持ちながらも、ありがたく参考にさせてもらったが、やっぱり何かの文字でエラーが出てパースできない。

頑張ってデータを調べたら、この方法ではうまくいかないのは、文字列中にダブルクオート「”」が入った場合。

面倒だから、とサーバ側でダブルクオートをシングルクオートとかに変換しちゃえば動く。

でも、それ気持ち悪い。


ここでふと思いついた。ダブルクオートは、文字列の区切りとしてJSONでは重要な文字列。

LoadVarsというのは非常にリッチなクラス(正確にはLoadVariablesメソッド)で、URLのクエリストリングやPOSTヘッダに書かれた「a=b&c=d」を自動的にパースして、URLエンコードされた文字も自動的に元の文字列に戻してくれて、オブジェクトのプロパティに自動で設定してくれる便利なメソッド。

ということで、json.asでパースすべきJSONのデータもイイ感じにdecodeしてくれちゃってるからワケのわからないことになってるのでは?!という仮説を立てた。


ということで、

こたえ:
「LoadVarsオブジェクトのonDataイベントの引数を使ってパースすべし」

onDataイベントの引数には、LoadVarsがパースする前の生文字列を取得できるので、これをそのままjson.asに放り込みましょう。

以上。

そうすれば、きっとFlash専用の文字加工など不要になりますし、サーバ側で「json_var = {JSONのデータ文字列}」というFlashだけの特殊な出力をする必要が無くなります。


PHPなどのサーバサイドで事前に文字列を数値参照に変換しているのは二重encodeして結果的にonLoadの自動デコードでJSONとしての不適切な文字列に戻すのを避けるようにしてるためのもの??それだと無理矢理なおまじないではないかと。

しかし、文字列の区切りに使っているダブルクオートだけはそうはうまくいかないから、Bad objectというプリミティブなエラーが出るんだろうな。あまり深追いはしてないけど、僕のゴーストがそうささやいた。


JSONのパースをネタにblogを書いてる人は、パースに成功してみるところまではやってみたけど、それ以上は使っていないということなのだろうか、、、、それとも、ハマりにハマって直した情報をフィードバックしてくれていないだけなのだろうか。

onDataで取るの当たり前じゃんとかいう人がいたら、一言blogに書いてもらえるとありがたかった(ワガママ)

僕もまだ修行が足りないってことだが、json慣れしてるのにFlash慣れしてない開発者はきっと同じように困るだろうから、これが「JSON Bad Object」でgoogle上位に出るようにメモメモ


#とか偉そうなこと言って、全然的外れだったら是非、コメントで教えてください。

■同じカテゴリ[Web系]のエントリー
<<前の記事 WebSig MT4イベント
>>次の記事 css nite okinawa来ています
■このblogの書き込み最新3件
そろそろモバツイがEC2に移転した話でも書くとするか。 とりあえずやってみて、ダメならすぐ手を変える体制重要 メールって盗聴されますか?