I want to parse this JSON using xSuperObject:
{
"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
}
}]
}
}
}
}
Here is my code:
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;
I want to collect all username values from the JSON, but my code raises an AccessViolation.
You are attempting to jump straight to the edges
array without first stepping through its parent elements. The actual location of the array you wish is at data.user.edge_followed_by.edges
.
It should work more like this...
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;