可以以及如何将远程数据(例如JSON)导入AppleScript?

时间:2011-01-05 05:37:48

标签: applescript

我有一个基于Web的API,我想通过AppleScript发送POST / GET请求。我想检索并解析响应,以便我可以将其提供给另一个应用程序。

这可能吗?如果是这样,怎么样?

例如,JSON数据如下所示:

{"result":"success","image":,"foo", "name":"bar"}

4 个答案:

答案 0 :(得分:8)

我需要在AppleScript中解析JSON,并制作了一个非常简单的可编写脚本的后台应用程序来执行此操作。它实际上只是将两个框架(JSON,Appscript)联系在一起。

现在Mac AppStore上免费提供。您可以在website上查看更多示例。

用法非常简单:

tell application "JSONHelper"

    -- return JSON from an AppleScript list

    set jsonString to make JSON from {"A", "B", "C"}
    log jsonString

    set asList to read JSON from jsonString

    -- return JSON from an AppleScript record

    set jsonString to make JSON from {a_string:"string", a_list:{"abc", 123, false, true}}
    log jsonString

    -- return an AppleScript record from JSON

    set asRecord to read JSON from jsonString
    log asRecord

end tell

答案 1 :(得分:3)

要回答特定问题(快速重读之后),唯一的Web支持Applescript就是通过URL Access Scripting库,它只是终端curl命令的包装器。这有点儿马车,并没有报告所有应该的事情。

除此之外,Applescript中也没有本机JSON支持,这样做会有点痛苦。要解析JSON,您需要使用Applescript's text item delimiters

set mJson to "\"result\":\"success\",\"image\":\"foo\", \"name\":\"bar\"" -- get your data into a string somehow, like a function
set AppleScript's text item delimiters to {","}
set keyValueList to (every text item in mJson) as list
set AppleScript's text item delimiters to ""
(*"result":"success", "image":"foo",  "name":"bar"*)

repeat with thiskeyValuePair from 1 to (count keyValueList)
    set theKeyValuePair to item thiskeyValuePair of keyValueList
    set AppleScript's text item delimiters to {":"}
    set theKeyValueBufferList to (every text item in theKeyValuePair) as list
    set AppleScript's text item delimiters to ""
    set theKey to item 1 of theKeyValueBufferList
    (*"result"*)
    set theValue to item 2 of theKeyValueBufferList
    (*"success"*)
end repeat

当一切正常时,这一切都已完成。您将不得不考虑格式错误的JSON,如您的示例中包含不属于的额外逗号,以及额外空格等差异。如果您可以在其他地方操纵数据以获得所需内容,我建议您这样做。 Applescript对于这样的事情并不是很好。

答案 2 :(得分:1)

我需要一个不需要任何新依赖项的版本(比如安装应用程序)。所以我制作了一个只有json编码器/解码器的AppleScript。

https://github.com/KAYLukas/applescript-json

答案 3 :(得分:0)

我使用正则表达式解析XML / HTML / JSON等。 AppleScript没有正则表达式的原生支持,但您可以下载名为Satimage的脚本添加,这将允许您在Applescripts中使用它们。

下载并安装脚本添加,然后查看Satimage user guide以获取说明和示例代码。

如果您不熟悉正则表达式(或者即使您已经熟悉),名为RegExhibit的应用程序将帮助您找到适合您脚本的语法。