gpt4 book ai didi

json - 写入 json 文本

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

我在 delphi 7 中使用 lkJSON-1.07,在他们的示例中

js := TlkJSONobject.Create;
js.Add('namestring','namevalue');
// get the text of object
s := TlkJSON.GenerateText(js);
writeln(s);
writeln;
writeln('more readable variant:');
// (ver 1.03+) generate readable text
i := 0;
s := GenerateReadableText(js,i);
writeln(s);

js.Free;

它生成这样的文本:{ “名称字符串”:“名称值”}

如何编写像这样的 json 文本格式:

{
"Users":
{
"test_user1":
{
"time":1600,
"Points":4
}
"test_user2":
{
"time":1500,
"Points":3
}
}
}

最佳答案

使用JSON Delphi Library时您必须采用以下方法才能将子 JSON 元素添加到其父元素:

function TlkJSONobject.Add(const aname: WideString; aobj: TlkJSONbase): Integer;

该方法允许将 aobj 参数作为 aname 元素的子元素附加。

下面的代码可以完成您的任务:

var
js0, js1, js2, js22: TlkJSONobject;
s: string;
i: Integer;
begin
js2 := TlkJSONobject.Create;
js2.Add('time', '1600');
js2.Add('Points', 4);

js22 := TlkJSONobject.Create;
js22.Add('time', '1500');
js22.Add('Points', 3);

js1 := TlkJSONobject.Create;
js1.Add('test_user1', js2);
js1.Add('test_user2', js22);

js0 := TlkJSONobject.Create;
js0.Add('Users', js1);

i := 0;
s := GenerateReadableText(js0, i);
WriteLn(s);

js0.Free;
end;
<小时/>

这是编写先前代码的更合适的方式 - 但在我看来可读性较差。

这里的想法是按照自然的父子关系顺序创建元素:使用 TlkJSONobjectField 属性将子元素添加到已插入的父元素中对象。

请注意,由于 defaultjs.Field['some string']js['some string'] 相同> 指令应用于 Field 属性。

var
js: TlkJSONobject;
s: string;
i: Integer;
begin
js := TlkJSONobject.Create;
try
js.Add('Users', TlkJSONobject.Create);

with TlkJSONobject(js['Users']) do begin
Add('test_user1', TlkJSONobject.Create);
Add('test_user2', TlkJSONobject.Create);
end;

with TlkJSONobject(TlkJSONobject(js['Users'])['test_user1']) do begin
Add('time', '1600');
Add('Points', 4);
end;

with TlkJSONobject(TlkJSONobject(js['Users'])['test_user2']) do begin
Add('time', '1500');
Add('Points', 3);
end;

i := 0;
s := GenerateReadableText(js, i);
WriteLn(s);

finally
js.Free;
end;
end;
<小时/>

运行项目,它打印:

{
"Users":{
"test_user1":{
"time":"1600",
"Points":4
},
"test_user2":{
"time":"1500",
"Points":3
}
}
}
<小时/>

在实际情况中,您显然会考虑使用某些循环指令创建对象并附加子对象。

关于json - 写入 json 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32968880/

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