-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtest.pas
52 lines (48 loc) · 2.09 KB
/
test.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
program test;
{$APPTYPE CONSOLE}
uses SysUtils, json;
var JS, ChildJS: TJSONValue;
I: Integer;
begin
// see example file: test.json
//
JS:= TJSONValue.Create;
// comments support on
JS.CommentsAllowed:= True;
try
JS.LoadFromFile('test.json');
// values by path
Writeln('values by path:');
Writeln(' glossary/title: ', JS.DefValue('glossary/title', ''));
Writeln(' glossary/Age: ', JS.DefValue('glossary/Age', 0));
Writeln(' glossary/Active: ', JS. DefValue('glossary/Age', False));
// array values by path
Writeln('array values by path:');
Writeln(' glossary/GlossDiv/GlossList/GlossEntry/GlossDef/GlossSeeAlso[0]: ', JS.DefValue('glossary/GlossDiv/GlossList/GlossEntry/GlossDef/GlossSeeAlso/0', ''));
Writeln(' glossary/GlossDiv/GlossList/GlossEntry/GlossDef/GlossSeeAlso[1]: ', JS.DefValue('glossary/GlossDiv/GlossList/GlossEntry/GlossDef/GlossSeeAlso/1', ''));
Writeln(' glossary/GlossDiv/GlossList/GlossEntry/GlossDef/GlossSeeAlso[2]: ', JS.DefValue('glossary/GlossDiv/GlossList/GlossEntry/GlossDef/GlossSeeAlso/2', ''));
Writeln(' glossary/GlossDiv/GlossList/GlossEntry/GlossDef/GlossSeeAlso[3]: ', JS.DefValue('glossary/GlossDiv/GlossList/GlossEntry/GlossDef/GlossSeeAlso/3', ''));
// check null value
Writeln('check null value:');
Writeln(' glossary/Age is NULL: ', JS.IsNull('glossary/Age'));
Writeln(' glossary/Owner is NULL: ', JS.IsNull('glossary/Owner'));
// check types
Writeln('check types:');
Writeln(' glossary/GlossDiv/GlossList/GlossEntry/GlossDef/GlossSeeAlso is ARRAY: ', JS.IsArray('glossary/GlossDiv/GlossList/GlossEntry/GlossDef/GlossSeeAlso'));
Writeln(' glossary/Age is STRING: ', JS.IsString('glossary/Age'));
Writeln(' glossary/Age is OBJECT: ', JS.IsObject('glossary/Age'));
Writeln(' glossary/GlossDiv is OBJECT: ', JS.IsObject('glossary/GlossDiv'));
// list of childrens
Writeln('list of childrens:');
ChildJS:= JS.ByPath('glossary');
Writeln(' children count: ', ChildJS.Count);
Writeln(' names:');
For I:= 1 to ChildJS.Count do begin
Writeln(' ', ChildJS.Values[I-1].Name);
end;
finally
FreeAndNil(JS);
end;
//
readln;
end.