我从 API 获取 JSON,它有一个怪癖:通常它返回“标签”元素作为对象 {“x”:“y”},但如果没有标签,它会返回空数组 []。
我用 SuperObject 解析 JSON,并使用以下代码:
var
JsonObject: ISuperObject;
item: TSuperAvlEntry;
temp: TStringList;
begin
{...}
for item in JsonObject.O['tags'].AsObject do
begin
temp.Add(item.Name);
end;
{...}
它对对象非常有效,但如果它是一个数组,它会因访问冲突错误而崩溃。
同样,如果我尝试类似:
if JSONObject['tags'].AsArray.Length=0 then
它适用于空数组,但如果它是一个对象则会崩溃。
我不确定元素可能在“标签”中,因此不知道在这种情况下如何使用 Exists()。
有任何想法吗?