AppleScriptでレコード文字列のデシリアライズのやり方がわからん
スポンサードリンク
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界隈ではデシリアライズとか言わないんだろうなーとは思うんですけどね。
スポンサードリンク
トラックバック(1)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2836
M.C.P.C.: AppleScriptでレコード文字列のデシリアライズのやり方がわからん にて、AppleScriptのレコードを表現する文字列 { creatorversion: "13.0", documentversion: "8.0" } を、実際にAppleScriptのレコードとして解釈してもらうためにどうすればいいか、ていうことがわからなかったわけです。 ほかのスクリプト言語であれば、これをデシリアライズという表現をして、PerlやJavaScriptだったらevalっていうやつを... 続きを読む






![: Amazon.co.jp: プラスティック・メモリーズ 1【完全生産限定版】(イベントチケット優先販売申込券付) [Blu-ray]](/lists/_9/B00VWX66E8.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 2【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66K2.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 3【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6MV0.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 4【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66IO.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 5【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6Y0E.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 6【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX69D6.jpg)


run script "{...}"
みたいな感じでrun scriptコマンドの引数としてレコードの形をしたJSON文字列を与えてやればレコードとして取り出せますよ。
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側でレコードとして取り扱えるようになっていることを確認できました。
教えていただきありがとうございます!