gpt4 book ai didi

json - 如何使用 X-SuperObject 访问 JSON 中的嵌套值

转载 作者:行者123 更新时间:2023-12-02 15:57:32 24 4
gpt4 key购买 nike

我想从这个 json 中获取所有用户。

{
"status": "ok",
"next_max_id": "AQAmA1l9NAQXa",
"sections": [
{
"module": null,
"show_view_all": null,
"title": null,
"users": [
{
"pk": 48165888,
"is_verified": false,
"profile_pic_url": "http://scontent-sit4-1.cdninstagram.com/t51.2885-19/s150x150/17332306_1915592632007479a.jpg",
"full_name": "Jason Giovany Castro Morales",
"is_private": false,
"has_anonymous_profile_picture": false,
"username": "jasongiovanycastromorales",
"profile_pic_id": "14699765111792881_48165888"
}
]
}
]
}

现在,我尝试获取所有用户名。

procedure TForm2.Button6Click(Sender: TObject);
var
json : ISuperObject;
node : ISuperObject;
item : IMember;
begin
try
json := TSuperObject.Create(list.Text);

for item in json['sections.users'].AsArray do
begin
node := item.AsObject;
Memo4.Lines.Add(node.S['username']);
end;
finally
end;
end;

第二次尝试..我得到了 AV!

var
json : ISuperObject;
node : ISuperObject;
item, item2 : IMember;
begin
json := SO(list.Text);

for item in json['sections'].AsArray do
begin
for item2 in json['users'].AsArray do
begin
node := item.AsObject;

Memo1.Lines.Add(node.S['username']);
end;
end;
end;

此 JSON 中有 200 个用户名值当我尝试使用 json 代码时,我什么也没得到,有时是 AV,我的问题是,如何正确解析此 json 以获得值 username?谢谢。

最佳答案

您的示例已损坏,并且您没有指定输入数据的格式,就像我不知道的那样,sections 数组中的所有对象是否都包含 users 数组。不管怎样,这个例子应该适用于你的代码片段。

SuperObject

procedure TForm2.Button6Click(Sender: TObject);
var
json, user, section : ISuperObject;
begin
json := SO(list.Text);
for section in json['sections'] do
begin
if Assigned(section['users']) then
begin
for user in section['users'] do
begin
if user.S['username'] <> '' then
Memo4.Lines.Add(user.S['username']);
end;
end;
end;
end;

编辑:事实上,您使用的不是 SuperObject,而是 X-SuperObject,这是不同的。尽管我从未使用过该库,但我只能通过他们网站上的示例找到问题,因为你犯了一些简单的错误,例如使用 item 而不是 item2 或第二个循环中的 jsonitem

X-SuperObject

procedure TForm2.Button6Click(Sender: TObject);
var
json : ISuperObject;
item, item2 : IMember;
begin
json := TSuperObject.Create(list.Text);
for item in json['sections'].AsArray do
begin
for item2 in item.AsObject['users'].AsArray do
Memo1.Lines.Add(item2.AsObject['username'].ToString);
end;
end;

关于json - 如何使用 X-SuperObject 访问 JSON 中的嵌套值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42966006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com