我有一个基于Web的API,我想通过AppleScript发送POST / GET请求。我想检索并解析响应,以便我可以将其提供给另一个应用程序。
这可能吗?如果是这样,怎么样?
例如,JSON数据如下所示:
{"result":"success","image":,"foo", "name":"bar"}
答案 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。
答案 3 :(得分:0)
我使用正则表达式解析XML / HTML / JSON等。 AppleScript没有正则表达式的原生支持,但您可以下载名为Satimage的脚本添加,这将允许您在Applescripts中使用它们。
下载并安装脚本添加,然后查看Satimage user guide以获取说明和示例代码。
如果您不熟悉正则表达式(或者即使您已经熟悉),名为RegExhibit的应用程序将帮助您找到适合您脚本的语法。