编写json文本
在他们的示例中,我在Delphi7中使用lkJSON-1.07编写json文本,json,delphi,delphi-7,Json,Delphi,Delphi 7,在他们的示例中,我在Delphi7中使用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 :
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文本格式,如下所示:
{
“用户”:
{
“测试用户1”:
{
“时间”:1600,
“点数”:4
}
“测试用户2”:
{
“时间”:1500,
“点数”:3
}
}
}
在使用时,必须采用以下方法将子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;
这是一种更适合于编写前面代码的方法,但在我看来可读性较差 这里的想法是按照自然父子关系顺序创建元素:使用
TlkJSONobject
对象的字段
属性将子元素添加到已插入的父元素中
请注意,js.Field['some string']
与js['some string']
相同,因为default
指令应用于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;
运行项目时,它会打印:
{
“用户”:{
“测试用户1”:{
“时间”:“1600”,
“点数”:4
},
“测试用户2”:{
“时间”:“1500”,
“点数”:3
}
}
}
在一个真实的情况下,你显然会考虑创建对象并使用一些循环指令来追加孩子。
文档说明了什么?你能解释一下你想要什么不同的东西吗?是嵌套字典吗?另外,在“test_user1”:{…}
之后没有逗号,这是您可能需要的。