| トップページ |

2009.05.01

AppleScriptでレコード文字列のデシリアライズのやり方がわからん

このエントリーをはてなブックマークに追加 mixiチェック

AppleScriptを最近はじめたんですけれども、参考書が少なくて困っていたところ、こんな本があるのを発見。

これ自分で買って会社においておけばMac好きな人が勝手に読んでなんか作ってくれると思って4年ぐらい前に買って書棚においておいたんだけれども結局何もできなかったんで、Macを仕事で使う人≠Mac好きな人であることを実感。自分でやるしかないか。

それはよいとして、AppleScriptからPerlのスクリプトをdo shell scriptで呼んで、結果をAppleScriptに受け渡ししたいところなんですけれども、Perl側で

$VAR1 = {
          'creatorversion' => '13.0',
          'documentversion' => '8.0'
        };

みたいな連想配列になっているものを、AppleScriptでいうところのレコードの文字列

{ creatorversion: "13.0", documentversion: "8.0" }

にしてAppleScriptに渡して、これをレコードとして処理させたいわけです。

PerlからのシリアライズについてはJSONとかのライブラリ使うと作る必要ねーなーと思ったのですけれども(←あとで罠にはまるフラグ)、AppleScript側でデシリアライズする方法がわからん。

ググっても出てこんので、AppleScript界隈ではデシリアライズとか言わないんだろうなーとは思うんですけどね。

2009.05.01 午前 10:42 [Script] | |

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/19018/44853340

この記事へのトラックバック一覧です: AppleScriptでレコード文字列のデシリアライズのやり方がわからん :

» AppleScriptでレコード文字列をデシリアライズ from M.C.P.C.
M.C.P.C.: AppleScriptでレコード文字列のデシリアライズのやり方がわからん にて、AppleScriptのレコードを表現する文字列 { creatorversion: "13.0", documentversion: "8.0" } を、実際にAppleScriptのレコードとして解釈してもらうためにどうすればいいか、ていうことがわからなかったわけです。 ほかのスクリプト言語であれば、これをデシリアライズという表現をして、PerlやJavaScriptだったらevalっていうやつを... 続きを読む

受信: 2009/05/24 23:07:25

コメント

run script "{...}"
みたいな感じでrun scriptコマンドの引数としてレコードの形をしたJSON文字列を与えてやればレコードとして取り出せますよ。

投稿者: s-take (2009/05/24 9:59:34)

set str to " {creatorversion: \"13.0\", documentversion: \"8.0\"} " as string
set result to run script result
display alert ("Creator Version: " & (get creatorversion of result) & "
Document Version: " & (get documentversion of result))

で、ちゃんとAppleScript側でレコードとして取り扱えるようになっていることを確認できました。

教えていただきありがとうございます!

投稿者: CL (2009/05/24 22:28:28)

コメントを書く