我想使用xSuperObject解析这个JSON:
{
"data": {
"user": {
"edge_followed_by": {
"count": 29594,
"page_info": {
"has_next_page": true,
"end_cursor": ""
},
"edges": [{
"node": {
"id": "224289647",
"username": "h9a",
"full_name": "",
"profile_pic_url": "",
"is_verified": false,
"followed_by_viewer": false,
"requested_by_viewer": false
}
}]
}
}
}
}
这是我的代码:
var
json : ISuperObject;
item, item2 : IMember;
begin
json := TSuperObject.Create(Memo1.Text);
for item in json['edges'].AsArray do
begin
Memo2.Lines.Add(item.AsObject['node.username'].ToString);
end;
end;
我想从JSON收集所有用户名值,但我的代码提出了一个AccessViolation。
答案 0 :(得分:3)
您试图直接跳转到edges
数组,而无需先跳过其父元素。您希望的数组的实际位置为data.user.edge_followed_by.edges
。
它应该更像这样......
var
Obj: ISuperObject;
Arr: ISuperArray;
Itm: IMember;
begin
Obj:= SO(Memo1.Lines.Text);
Arr:= Obj.O['data'].O['user'].O['edge_followed_by'].A['edges'];
for Itm in Arr do begin
Memo2.Lines.Add(Itm.AsObject.O['node'].S['username']);
end;
end;