我有一个我试图在 AppleScript 中使用的 JSON 结果,但是因为顶级项目是“未命名的”,我只能通过管道项目引用来访问它们,在这种情况下是一个数字。结果,我无法遍历它,它必须是硬编码的(向下滚动到最后一个代码示例以了解我的意思)
例如,这是我正在查看的 JSON:
{
"1": {
"name": "Tri 1"
},
"2": {
"name": "Tri 2"
},
"3": {
"name": "Tri 3"
},
"4": {
"name": "Orb Dave"
},
"5": {
"name": "Orb Fah"
}
}
在 JSON Helper 的帮助下,我将 JSON 转换为更可用的格式(对于 AppleScript)。
{|3|:{|name|:"Tri 3"}, |1|:{|name|:"Tri 1"}, |4|:{|name|:"Orb Dave"}, |2|:{|name|:"Tri 2"}, |5|:{|name|:"Orb Fah"}}
然后,我可以使用此代码获取相关对象的“灯光”列表:
set lights to (every item in theReturn) as list
repeat with n from 1 to count of lights
set light to item n of lights
log n & light
end repeat
由此,我得到:
(*1, Tri 3*)
(*2, Tri 1*)
(*3, Orb Dave*)
(*4, Tri 2*)
(*5, Orb Fah*)
您可能会注意到结果未按所需顺序排列。索引是灯光列表中的索引。它不是出现在对象顶部的数字。如果您查看前两个预先格式化的区域,您会看到项目 1,2 和 3 是 Tri 1、Tri 2 和 Tri 3。Tri 3 先出现、Tri 1 第二和 Orb 是正确的是第三个。
我需要做的是找到一种能够以任何顺序(排序或未排序)遍历 JSON 并能够将“1”与“Tri 1”、“3”与“Tri 3”和“对齐”的方法5" 与 "Orb Fah"。但我找不到任何方式与返回的 JSON 交互,让我引用第三盏灯并返回它的名称。我似乎能够做到的唯一方法是对光索引进行硬编码,例如:
log |name| of |1| of theReturn
log |name| of |2| of theReturn
log |name| of |3| of theReturn
log |name| of |4| of theReturn
log |name| of |5| of theReturn
这给了我正确名称的正确灯光:
(*Tri 1*)
(*Tri 2*)
(*Tri 3*)
(*Orb Dave*)
(*Orb Fah*)
我认为问题的出现是因为灯光 ID 没有描述符或排序。我无法改变,但我需要以编程方式遍历它们。如上所述对它们进行硬编码是不可接受的。
任何帮助,将不胜感激