gpt4 book ai didi

json - 如何在 Delphi 中用值(而不是对)填充 JSON 数组?

转载 作者:行者123 更新时间:2023-12-03 15:39:10 26 4
gpt4 key购买 nike

我正在尝试创建如下所示的 JSON:

{ "guestlist": ["alice","bob","charlie"] }

我看到的填充 JSON 数组的典型示例如下所示:

var 
jsobj: TJsonObject;
jso : TJsonObject;
jsa : TJsonArray;
jsp : TJsonPair;

begin
jsObj := TJsonObject.Create();
jsa := TJsonArray.Create();
jsp := TJSONPair.Create('guestlist', jsa);
jsObj.AddPair(jsp);

jso := TJsonObject.Create();
jso.AddPair(TJSONPair.Create('person', 'alice'));
jsa.AddElement(jso);

jso := TJsonObject.Create();
jso.AddPair(TJSONPair.Create('person', 'bob'));
jsa.AddElement(jso);

jso := TJsonObject.Create();
jso.AddPair(TJSONPair.Create('person', 'charlie'));
jsa.AddElement(jso);
end;

但这会导致这样的结果:

{ "guestlist": [{"person":"alice"},{"person":"bob"},{"person":"charlie"}] }

如何将单个值而不是一对值添加到数组中?我在 TJsonObject 的文档中没有看到有关如何执行此操作的任何内容,

最佳答案

这实际上比您想象的要简单得多。 TJSONArray 可以愉快地包含任何 TJSONValue 作为元素,因此解决方案非常简单。

program Project1;
{$APPTYPE CONSOLE}

uses
JSON;

var
LJObj : TJSONObject;
LGuestList : TJSONArray;
begin

LGuestlist := TJSONArray.Create();
LGuestList.Add('alice');
LGuestList.Add('bob');
LGuestList.Add('charlie');

LJObj := TJSONObject.Create;
LJObj.AddPair(TJSONPair.Create('guestlist', LGuestList));

WriteLn(LJObj.ToString);
ReadLn;
end.

产生输出:

{"guestlist":["alice","bob","charlie"]}

关于json - 如何在 Delphi 中用值(而不是对)填充 JSON 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35043775/

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