我找到了这个Q& A(Can and how do you get remote data (e.g. JSON) into AppleScript?),并开始使用JSON Helper。
{
"prop1": "text",
"prop2": [
{
"prop3": "text",
"prop4": "text"
}
]
}
-- set configPath to path to resource "config.json"
set configPath to POSIX path of (path to resource "config.json")
-- set configPath to "file://" & POSIX path of (path to resource "config.json")
set configOptionsString to (read POSIX file configPath)
tell application "JSON Helper"
-- set configOptions to fetch JSON from configPath
set configOptions to read JSON from configOptionsString
-- set configOptions to make JSON from configOptionsString
end tell
-- display dialog configPath as string
display dialog configOptionsString
display dialog configOptions
display dialog configOptions as string
configPath
正确显示基于'/'的POSIX路径。
configOptionsString
正确包含JSON文本。
configOptions
错误地为空。
唯一的问题是,在尝试使用fetch JSON from
命令时,我无法强制它使用本地文件路径并获取我期望的文本/ JSON内容。
我已尝试过HFS和POSIX样式的文件路径,包括前缀为file://
的POSIX,从而生成此格式(file:///...
)。我还通过在命令中附加as string
来解决任何别名错误(我认为是HFS路径),例如在调试通过display dialog
指令查看路径时。
我知道它可以在我使用它时找到资源:path to resource "config.json"
。在重新启动脚本编辑器之前,它有一个关于找不到资源的错误。
我甚至尝试正常加载文件的内容,并使用read JSON from
命令将它们解析为字符串:
set configOptionsString to (read POSIX file configPath)
tell application "JSON Helper"
set configOptions to read JSON from configOptionsString
end tell
为了完整起见,我尝试使用相同的字符串并通过make JSON from
命令运行它,只是为了尝试它,但它也产生空输出。
JSON帮助程序(Examples)是否能够执行此操作,如果是,我应该如何或应该尝试使用applescript-json之类的工具?
答案 0 :(得分:1)
是的,JSON Helper能够做到这一点,而不是方法#1 - 它只影响http
URL - 也不会#3 - 它从AppleScript字典{foo : "bar"}
创建一个JSON字符串,而不是相反 - ,但接近#2。
方法#2的问题很可能是那种文件路径(或损坏的JSON)。
AppleScript read
命令接受以下格式:
read "/Users/myUser/json.txt"
read (path to resource "json.txt")
file
- read file "Macintosh HD:Users:myUser:json.txt"
答案 1 :(得分:0)
除非您需要支持旧的OS X版本,否则请通过AppleScript-ObjectiveC桥使用Cocoa的NSJSONSerialization
类,该桥自10.10以来一直是AS中的本机功能。