M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2009年5月 1日 10:42

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界隈ではデシリアライズとか言わないんだろうなーとは思うんですけどね。

投稿 大野 義貴 [Script] | |

トラックバック(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っていうやつを... 続きを読む

コメント(2)

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側でレコードとして取り扱えるようになっていることを確認できました。

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

コメントする