 

 !®

 !"#$%&'
(($
 !)' !* (+
,-$./!'0.1!2! !,33 ,"'4!!5! ',,.' 2!6!'72!,1 .!
./!2! ' ,.42!!6!2",27 " ,22'./!1 .!'0"8 ,' .4!
' !  9./!'0.1!&1/!./!!6!&72!,'..4.'"& 24, 91./'4.27..' & "
1 ." '0 ..2!& 7!/ .:2."& ;42."& 0. ! 0' .42 4'!& 4"& ' 
 0 9!7! .'./!!42..':!':. !,0'74!&.'./!0422!.!6.! .22'1!,:"2:2!21
./!2! '!6!2",27 "1 .!./.7":!72!,0'749!'0.,!&'4!'0
,!2 9&''4!'0!0'7 !04./!&1./'4.27. 9./!9! !2."'0./!0'!9' 9& ./!
2! '78! '1 .!'!!! ..' .'!0'7 !'0./!'0.1!& ,!022"
,27 "1 ."./.<=./!'0.1!122'!.!'7: .' 1./'./!.!7&!;47! .&
'0.1!&".!7',.&<=./!'!.' '0./!'0.1!122:!4  .!4.!,'!'0!!&<>=
!' ./!'0.1!&0 "&122:!'!.!, ''2'1..!  0'7.' ',5!95! :"./!
2! '&'.9! .'!72'"!!/22!.!'0'7./!:'0 "1 ."'0 "8 ,./!
'0.1!  '5,!, 1./ 22 042.  , ./! ! .! 8 '0 .0.'" ;42."& !0'7 !&
4"& ,!00'.1./"'4
?$@(($($
 !)' !* >(+
"#
9 A
- A
9 A
>B? +
C2-
D5 
E,$ 
A/F- 
+ C
!- E
F- A
!?$ A
) 8 A
)! +
>)?8 C
C)-$ D
F- D
)! D
),-?$ A
>)  >
C) - >E
D)  >
E)? C
A)0$ C>
+). CD
)- CE
)- CA
)-$ C+
)-$ D
>,-,'7--<,,=F- D>
 !)' !* C(+
> DE
>)! DE
>),-?$ DE
>>)-$ DE
>C). DA
C, DA
C0$ DA
C/ D+
CG?F$ D
CF$ E
C>$ E>
CC) E>
CD2?-B-'@H-<2'= E>
CE EC
>4 EE
>/ EE
>)- EE
>I E+
>>5?:- E
>>!$,-?$7- E
>>$,-?$7- E
>4-,'7 A
>)- A
>I A
>>5?:- A
>>4-,'7 A
>>)- A
>>I A>
>>>5?:- AC
>C4-.,'7 AC
>C)- AC
>CI AA
>C>5?:- A
>D4-0$)'  +
 !)' !* D(+
>D)- +
>DI +
>D>5?:- +C
>E4--<J= +D
>E)- +D
>EI +E
>E>5?:- +A
>A4--<F= +A
>A)- ++
>AI +
>A>5?:- 
>+4-0$ 
>+)- 
>+I 
>+>5?:- >
>4- C
>)- C
>I D
>>5?:- E
>4-)'  A
>)- A
>I +
>>5?:- +
>4-2' 
>)- 
>I 
>>5?:- >
>4-/..9!. D
>)- D
>I E
>>5?:- E
>>4-/..4. A
>>)- A
>>I 
 !)' !* E(+
>>>5?:- C
>C4--$ A
>C)- A
>CI 
>C>5?:- 
>D4--$G? >
>D)- >
>DI<?-@-%= C
>D>I<?= A
>DC5?:- 
>E4--$ >
>E)- >
>EI >>
>E>5?:- >D
C,22 >A
C,1-B? >+
C1-B? D>
DF- AC
E AD
A.FJ2- AA
A$@?!K! AA
 !)' !*9 A(+
$
 %
 .-?$-@F-&@-?-F$F)' !
'7(-6@<@JF.@=
 .@?$$F)' &)' -$--
@-JF-?F$-&@?&@-$-
> .-?$-@&-$)' )' -$$F-&
J@$$$FJ$$G?$F$$
F-
C FJ)' )' -$$F-@$
LF?-
:$$?@?FL$F---
$
 -  @   @  ?M  -   @B- 
F?-
 $&'
 -%-
-@B<N'6&N2=
---
?-?-B&-B
F$-?$B
 '-@BG?F@?FJ@--
> .-@@?@
 !)' !*9 +(+
$&,$
F-$$&/F-
2@?-%&2-
C .---?$$$$G?-?F$
-$$JAdministrator
install.cmd K -$ $&- %$  F
?$-??install.cmd --helpF$@-?
test.cmd K !-? 1J - / <1/= - -?   -% . -?
G?-%@?--?Finstall.cmd
uninstall.cmdK4?-$-%
F$$
D F-?$$$F$FJ@-@?
??-&J4
E 0-$F-F@FF-,22
( )&*
 .@-$?$@F-B?$?$-$-$$?
-$
 F$-B--B?
>@K.$?@?@>EC@F$&@?-@>
@->@-$
EC@K.$?@?EC@F$-@EC@-
EC@-$
> 0?--B--B?
 !)' !*9 (+
,'7F1%<,1=K.$?$$)' ,'7F?-
@-&F&-?@-?$L$
-$F1%<1=.$?$$@)' ,'7)' -$
F?-@-&F&-?@-?$L$
,'7F<,= K O4@P .$?$$)' ,'7
F?---?@-?$L$
-$F<=O4@P.$?$$@)' ,'7
)' -$F?---?@-?$L
$
C .-$@FF?-F$-B?$F$F?$?-B?$
,1>&,1EC
1>&1EC
,>&,EC
>&EC
+ ,&
 !-$?F@-?@-?<=&F%F
@-F$F?-$-
(($($
 .-$?@%2BJ$B$?@H-$?$
-J?@H-$?
> .-%-?@H--@F$2BJF$?@H-$?

C .2B-@-$?-$$-?J$
J-JB-?-
 !)' !*9 (+
rundll32.exe <SUBJECT_MODULE>.ocx,ExtractLicense
D .--@J$$@?-$$
rundll32.exe <SUBJECT_MODULE>.ocx,ShowLicense
E .--@.,'4.?-$$
rundll32.exe <SUBJECT_MODULE>.ocx,PrintLicense
A !---J?G?,?FJ@J$
@-Q-J?$J@$?
7?B$
,-
.2@94,<.2:,=
94,<2,=
F-?$94,
+ 7R$?&-B?-J--J&
J  & -  F- J @ -$ -$@ F  % F -
F-?$?@$
 2B@$?@?-%??G?-%
$.-%$FB
$$$?@F?@G?%?-%@B-
?@- )!.unlock $J-%? )-
$$$-%@J@@--FF
-F)!F--F$
- .&
 .@-$?>?$@S7)'TS7 'TS./T

0
$

 !)' !*9 (+
 !-?J-@??@G?-J
./ ? <FG?= 7 ' ? <FG?= ? ?@H--
7)'?
> ./?$
JF?
?@?B&J%$$$J
$?-$-$@J?J-7)'-$
C 7 '?$
JF?(@@
?@?B&J%$$$J
$?-$-$@J?J-7)'-$
D 7)'?$
JF?(@@
@?B&J%$$$J
$?$@F?-$@J?
/ 0%12
 B$?@%$-JB$
 1%-B?G?$B'62
> -B?G?$F'62B@?-)' BJ
$?-@
C ,F?$?-B?B-@-?-$$
rundll32.exe <SUBJECT_MODULE>.ocx,ExtractConfig
D 0$F'6&2)' B$?@-FJFJ-$
 !)' !*9 (+
jess-<CONFIGURATION>-<VERSION>_<ORDER_ID>.<EXTENSION>
.FJ$J)' -$  $?B$F$EC@
$-FI
jess-ssr64-1.2.1_1010101010.ocx
jess-ssr64-1.2.1_1010101010.lic
jess-ssr64-1.2.1_1010101010.json
E '-$-'6B@@-
DllRegisterServerF?-<F1J,8R--?$=&?-$$
-?J$
regsvr32.exe jess-<CONFIGURATION>-<VERSION>_<ORDER_ID>.ocx
3 4&'&
 .@G?1J6J1J'
 FR--?$$$$$?F?
--FF$??F'7(-6-$.@-@?
$$$??'7(-6-$&$%J-?&
@?$
5?:-<=
5?:-F-<5:=
1J-/<1/=
(UU<F-$F1JF$=
 !.<?=
)-
)-
.-
,
 !)' !*9 >(+
)
?

9
)
?@
!
.2
J
5?0<50=
J:?
/


5?':'2
7@
!<?=
-
> >@-$?@F-F$>@$EC@-$?
@F-F$EC@$/J$$$G?>@-$@
@??J?$?-EC@-
$???&%5??10$
 !)' !*9 C(+
C ,R$$$@?F?$--$?
FR--?$F?$$B?J?
-$F-JJ
D ,R$$$-F$F$@?$-
JF@JF-&?-$-F?-F$--@
?@?B?-FF--F?-F$@-@
-,2?F$F'6B?'5J?F$7-F,8@
-%0T5J.2@$?$-'6B
E !-@F-?&J-$F-$$@-@--@@
IDispatch?@
A @F-'2!?$-$@
5 
 @-@F-??$@F$$$$?$
-B-?&-?$-@?L$???@
$$$??
 F-???
interface interface_name {

...

...

...
}
J
 !)' !*9 D(+
interface_nameK-?F-$
> .-?--?
[enumerator] K---J?$??
?-B-$J&F&@F!?$5 .'7F-7
$$?J?$@@H-??-B-J
-?-%for&foreach&-$??--%$&%)-&
??-?@H---:$?@
F-$%?$@
C 7???
name(arg1 : type1, arg2 : type2, arg3 : type3 = default_value) : result_type
J
nameK-$$
arg1, arg2, arg3K?$$
type1, type2, type3KL?$$
= default_valueKF??F?$
result_typeKL$F??F$??
D ???
name : type = default_value [optional_traits]
1@$-?
KE@JL4.0E2!-
@Ktruefalse
@H-K
K>@J
F-KF-@@
'.K-B-@@
 !)' !*9 E(+
?
read-onlyK-@R?
case-insensitiveK2-F?R-@?@
-B
6 '&
 )' !-@F)' R-&J?
?@F-JLG?-FE@J--
-?4.0E2!-!$?'7(-6-$$
@??-?-F-?
-F$
 .?)' $?:'7%<:'7=)' -?$-F
?-&@?:'7J)' FJ
')' -?$F:'7--$:'7F--F
$--?$?
')' -?$:'7?--B:'7@F
-?-
> ?-?0E>ED-$-?-?
?- :'7%<:'7=
utf-8 0xEF, 0xBB, 0xBF
utf-16 0xFF, 0xFE
utf-32 0xFF, 0xFE, 0x00, 0x00
.@?-
 !)' !*F- A(+

 *2
 '7'
enum JsonNodeKind {
jsonNodeObject = 1
jsonNodeArray = 2
jsonNodeNull = 3
jsonNodeNumeric = 4
jsonNodeString = 5
jsonNodeBoolean = 6
}
 .JsonNodeKind?$B@%F)' 
jsonNodeObject = 1
 7)' @H-{}.
jsonNodeArray = 2
> 7)' [].
jsonNodeNull = 3
C 7)' null?
jsonNodeNumeric = 4
D 7)' ?$@
jsonNodeString = 5
E 7)' 
jsonNodeBoolean = 6
A 7)' truefalse.
 !)' !*F- +(+
 
enum JsonError {
jsonErrorSuccess = 0
jsonErrorCommonFirst = 256
jsonErrorCommonInvalidArgument = 256
jsonErrorCommonInvalidObjectState = 257
jsonErrorCommonUnsupportedByObjectKind = 258
jsonErrorCommonIndexOutOfBoundary = 259
jsonErrorCommonInvalidEncodingSequence = 260
jsonErrorCommonBadDereferencing = 261
jsonErrorCommonNoMemoryAllocated = 262
jsonErrorCommonLast = 262
jsonErrorParserFirst = 4096
jsonErrorParserUnexpectedEndOfData = 4096
jsonErrorParserUnexpectedToken = 4097
jsonErrorParserInvalidData = 4098
jsonErrorParserInvalidEscapeSequence = 4099
jsonErrorParserLast = 4099
jsonErrorDomFirst = 12288
jsonErrorDomCannotBeAddedToObject = 12288
jsonErrorDomCannotBeAddedToArray = 12289
jsonErrorDomNoReadAccess = 12290
jsonErrorDomNoWriteAccess = 12291
jsonErrorDomNodeNotFound = 12292
jsonErrorDomAlreadyAtRoot = 12293
jsonErrorDomNodeHasNoName = 12294
jsonErrorDomNoAssociatedNode = 12295
jsonErrorDomForeignNode = 12296
 !)' !*F- (+
jsonErrorDomLast = 12296
jsonErrorSchemaFirst = 16384
jsonErrorSchemaInvalidUri = 16384
jsonErrorSchemaCannotBeResolved = 16385
jsonErrorSchemaUnexpectedValue = 16386
jsonErrorSchemaUnexpectedValueType = 16387
jsonErrorSchemaDuplicatedAssertion = 16388
jsonErrorSchemaInvalidAssertionSyntax = 16389
jsonErrorSchemaReferenceCycle = 16390
jsonErrorSchemaDuplicatedId = 16391
jsonErrorSchemaUnexpectedSchema = 16392
jsonErrorSchemaUnsupportedSchema = 16393
jsonErrorSchemaRegex = 16394
jsonErrorSchemaSchemaRequired = 16395
jsonErrorSchemaLast = 16395
jsonErrorValidationFirst = 20480
jsonErrorValidationFalseAssertion = 20480
jsonErrorValidationValueType = 20481
jsonErrorValidationValue = 20482
jsonErrorValidationRequiredProperty = 20483
jsonErrorValidationNodeCount = 20484
jsonErrorValidationNotUnique = 20485
jsonErrorValidationRequiredNode = 20486
jsonErrorValidationLast = 20486
}
 JsonError
B@@-B--!-?-&
$FJ-@--B?
 !)' !*F- (+
!-$ B?
Common 
Parser 
Dom 
Schema 1&
Validation 1&
.@!-
jsonErrorSuccess = 0
 7V W
jsonErrorCommonFirst = 256
> 7-B-$$-
jsonErrorCommonInvalidArgument = 256
C 7V?$W
jsonErrorCommonInvalidObjectState = 257
D 73.@H-3
jsonErrorCommonUnsupportedByObjectKind = 258
E 73.-?@@H-%3
jsonErrorCommonIndexOutOfBoundary = 259
A 73?F@?3
jsonErrorCommonInvalidEncodingSequence = 260
+ 73:G?-??@---?3
jsonErrorCommonBadDereferencing = 261
 73!F-$3
jsonErrorCommonNoMemoryAllocated = 262
 73G?$$J-3
 !)' !*F- (+
jsonErrorCommonLast = 262
 7--$$-
jsonErrorParserFirst = 4096
 7-B--
jsonErrorParserUnexpectedEndOfData = 4096
> 734-F3
jsonErrorParserUnexpectedToken = 4097
C 734-%3
jsonErrorParserInvalidData = 4098
D 7WW
jsonErrorParserInvalidEscapeSequence = 4099
E 734-L-G?-3
jsonErrorParserLast = 4099
A 7---
jsonErrorDomFirst = 12288
+ 7-B-,'7-
jsonErrorDomCannotBeAddedToObject = 12288
 73?-@,'7@H-3
jsonErrorDomCannotBeAddedToArray = 12289
 73?-@,'73
jsonErrorDomNoReadAccess = 12290
 73 @3
jsonErrorDomNoWriteAccess = 12291
 73 J@3
jsonErrorDomNodeNotFound = 12292
 !)' !*F- (+
> 73G?F?3
jsonErrorDomAlreadyAtRoot = 12293
C 73.3
jsonErrorDomNodeHasNoName = 12294
D 73.$3
jsonErrorDomNoAssociatedNode = 12295
E 73 -JG?3
jsonErrorDomForeignNode = 12296
A 73.@,'7-?$3
jsonErrorDomLast = 12296
+ 7--,'7-
JsonErrorSchemaFirst = 16384
 7-B--$-
jsonErrorSchemaInvalidUri = 16384
> 7343
jsonErrorSchemaCannotBeResolved = 16385
> 73.G?-$-@3
jsonErrorSchemaUnexpectedValue = 16386
> 734-?3
jsonErrorSchemaUnexpectedValueType = 16387
>> 734-?3
jsonErrorSchemaDuplicatedAssertion = 16388
>C 73,?-3
jsonErrorSchemaInvalidAssertionSyntax = 16389
>D 733
 !)' !*F- >(+
jsonErrorSchemaReferenceCycle = 16390
>E 73F----3
jsonErrorSchemaDuplicatedId = 16391
>A 73,?--$,3
jsonErrorSchemaUnexpectedSchema = 16392
>+ 734-XY-$X-3
jsonErrorSchemaUnsupportedSchema = 16393
> 734?XY-$X43
jsonErrorSchemaRegex = 16394
C 73?--@-3
jsonErrorSchemaSchemaRequired = 16395
C 73-$G?3
jsonErrorSchemaLast = 16395
C 7---$-
jsonErrorValidationFirst = 20480
C> 7--5-
jsonErrorValidationFalseAssertion = 20480
CC 7303
jsonErrorValidationValueType = 20481
CD 735?X$G?$3
jsonErrorValidationValue = 20482
CE 735?X$G?$3
jsonErrorValidationRequiredProperty = 20483
CA 73G?$3
jsonErrorValidationNodeCount = 20484
 !)' !*F- C(+
C+ 73 -?X$$G?$3
jsonErrorValidationNotUnique = 20485
C 73 X$?G?G?$3
jsonErrorValidationRequiredNode = 20486
D 73G?$3
jsonErrorValidationLast = 20486
D 7--5-
( *7'
enum JsonStatusKind {
jsonStatusUnknown = 0
jsonStatusJess = 1
jsonStatusSystem = 2
jsonStatusProvider = 3
}
 JsonStatusKindB%F?F$?F$?'??$
@@
jsonStatusUnknown = 0
 7 ?F$
jsonStatusJess = 1
> 7.??F$-@@-B-
jsonStatusSystem = 2
C 7.??F$-@'
jsonStatusProvider = 3
 !)' !*F- D(+
D 7 .??F$-B-?F%G?
,
+ 82''
enum JsonSchemaStandard {
jsonSchemaStandardUndefined = 0
jsonSchemaStandardDraft07 = 7
}
 JsonSchemaStandardB)' -$?
jsonSchemaStandardUndefined = 0
 7)' -$?B-B
jsonSchemaStandardDraft07 = 7
> 7)' -$,FA
 
 
interface IJsonEssentials {

id : integer [read-only]
versionMajor : integer [read-only]
versionMinor : integer [read-only]
versionPatch : integer [read-only]
licenseText : string [read-only]
tools : IJsonTools [read-only]

unlock(licenseToken : string) : boolean
 !)' !*F- E(+
createDocument() : IJsonDocument
createSchemas() : IJsonSchemas
}
 .)!BF-F)!-@F$
F--@-@JF-$)-@H-$$F
$F?
id : integer [read-only]
 ?4G?,-J@-
versionMajor : integer [read-only]
> ?.$H@-$?
versionMinor : integer [read-only]
C ?.$@-$?
versionPatch : integer [read-only]
D ?.-@-$?
licenseText : string [read-only]
E ?.F-B
tools : IJsonTools [read-only]
A ?@-F).@H-4$R--J
-F).-$M&@R-@J@J
F--).F-
unlock(licenseToken : string) : boolean
+ !R-4-%@?-BlicenseToken$?@B-@
?@?-%$@-@@H-.FJF
)! F-G?@?-% id& versionMajor& versionMinor& versionPatch
?@G?-F$FB?--F??-%$J@
 !)' !*F- A(+
7'. .-%$?@--@@-?@
?-?M$?@-J.@--
%-(-
?trueF@@?-%?--F?&falseJ
createDocument() : IJsonDocument
 !R-J-F$)' -?$4$$R-J
-J-F),-?$-$M&@R-
@J@J-)' -?$
?.),-?$F-FJ-)' -?$@H-
createSchemas() : IJsonSchemas
 !R-J-F-$---4$$R-J
-J-F)-$-$M&@R-
@J@J--$--.$@-B?-?
)' -$$$&B?
?.)-$F-FJ-)' -$--
 0*2
interface IJsonDocument {

json : string [read-only]
root : IJsonNode [read-only]
encoding : string [case-insensitive]
format : IJsonFormat [read-only]
location : string [read-only]

makeEmptyObject() : IJsonNode
 !)' !*F- +(+
makeEmptyArray() : IJsonNode
makeValue(value : object) : IJsonNode
save(
target : object,
encoding : string = undefined,
request : object = undefined,
writeBom : boolean = false) : IJsonStatus
load(
source : object,
encoding : string = undefined,
request : string = undefined) : IJsonStatus
parse(json : string) : IJsonStatus
}
 . ),-?$ B  F- F  ),-?$ -   @ F 
$F)' -?$$?--
json : string [read-only]
 ?$-)' F-?$)' F$?
)0$@format.F)' @H-$?
$-J-$J4-,'7
root : IJsonNode [read-only]
> ?@H-F-4-.,'7
encoding : string [read-write, case-insensitive]
C ?!-$?F)' -?$!-&4-0$

location : string [read-only]
 !)' !*F- (+
D ?-B---?-F)' -?$@H-
,&4-0$
makeEmptyObject() : IJsonNode
E !R-7%F-?-?$$)' @H-F-
,'7@H-$?@?4-0$
?@H-F-
makeEmptyArray() : IJsonNode
A !R-7%F-?-?$$)' F-
,'7@H-$?@?
?@H-F-
makeValue(value : object) : IJsonNode
+ G?valueF
string
number
boolean
null
!R-7%F-?-?$)' ?F-,'7
@H-$?@?
?@H-F-
save(
target : object,
encoding : string = undefined,
request : object = undefined,
writeBom : boolean = false) : )?
 G?
 !)' !*F- >(+
target@H-?@F,
encoding-B<=&-F?!-F
-B&?Fencoding?
request-B-$,
writeBom@?-BJ:'7%<:'7=@
@F)' -?$-F?-!-
!R-$J)' F-?-?$-B?
4-0$&4-/..4.
??@H-
load(
source : object,
encoding : string = undefined,
request : string = undefined) : IJsonStatus
 G?
source@H-?@F,
encoding-B<=&-F?!-
request-B-$,
!R-$)' F$-B?
F-,'7@H-$?@?-FF?
?,'7-?$@-$$)' @H-&
J-?-?  4-,'7& 4-0$& 4-)'
&4-2'&4-/..9!.&4-/..4.&4--$
??@H-
parse(json : string) : IJsonStatus
 G?json-)' 
 !)' !*F- >(+
!R-$)' F-,'7@H-
$?@?-FF??,'7-?$
@-$$)' @H-&J-?-?4-
,'7
??@H-
( '
interface IJsonNode {

json : string [read-only]
document : IJsonDocument [read-only]
parent : IJsonNode [read-only]
name : string [read-only]
isRoot : boolean [read-only]
isObject : boolean [read-only]
isArray : boolean [read-only]
isEmpty : boolean [read-only]
isNull : boolean [read-only]
isNumeric : boolean [read-only]
isString : boolean [read-only]
isBoolean : boolean [read-only]
isContainer : boolean [read-only]
hasName : boolean [read-only]
kind : JsonNodeKind [read-only]
nodes : IJsonNodeCollection [read-only]
dom : object,
index : integer [read-only],
annotation : IJsonNodeAnnotation [read-only]
 !)' !*F- >(+

equals(
other : object,
noName : boolean = false) : boolean
save(
target : object,
encoding : string = undefined,
request : object = undefined,
writeBom : boolean = false) : IJsonStatus
select(selector : object) : object
createJsonPointer() : IJsonSelector
}
 ) BF-F)' @H-@F$F
$?--
json : string [read-only]
 ?$-)' F-?-)' 
F$? )0$ @ ),-?$.format .F)'
@H-$?$-J-$J4
-,'7
document : IJsonDocument [read-only]
> ?'J-?$@H-F-
parent : IJsonNode [read-only]
C ?.MF-nullF-?
name : string [read-only]
D ? $F-?F-?M)' @H-&Jnull
 !)' !*F- >>(+
isRoot : boolean [read-only]
E ?trueF-?-?$&Jfalse
isObject : boolean [read-only]
A ?trueF-?)' @H-&Jfalse
isArray : boolean [read-only]
+ ?trueF-?)' &Jfalse
isEmpty : boolean [read-only]
 ?trueF-?$)' @H-$)' &Jfalse0?
?Jtrue
isNull : boolean [read-only]
 ?trueF-?null&Jfalse
isNumeric : boolean [read-only]
 ?trueF-??$-?&Jfalse
isString : boolean [read-only]
 ?trueF-??&Jfalse
isBoolean : boolean [read-only]
> ?trueF-?@?&Jfalse
isContainer : boolean [read-only]
C ?trueF-?)' @H-)' &Jfalse4-
.,'7
hasName : boolean [read-only]
D ?trueF-?$-J&M)' @H-&
Jfalse
kind : JsonNodeKind [read-only]
E ? .%F-?
nodes : IJsonNodeCollection [read-only]
 !)' !*F- >C(+
A ?.F-F--F-F-?)' @H-)'
&Jnull4-.,'7
dom : object
+ --?@H--?J@&-@F
string
number
boolean
null
@H--@Z2?-B-'@H-<2'=
?,-,'7--<,,=F-F--?-B-?F?
4-2'
index : integer [read-only]
 ?.L@F-?F&J0
annotation : IJsonNodeAnnotation [read-only]
 ? . F- F    @H- F  -?  F @ -B? <
B?=  1 &JM???Jnull:
F?@H-BJFB
- - )-$.annotate $ F -? &    
-?$4--$
equals(
other : object,
noName : boolean = false) : boolean
 !R-$-?other@H-) F-F@H-
),-?$F-F-?$@H-FJ-J@-$F
--&-$-?:F?-?$-$
other$F?-$&?noNametrue.F@H-$
-4-)' 
 !)' !*F- >D(+
 ?trueF@)' ,'7F$-?-&J
false
save(
target : object,
encoding : string = undefined,
request : object = undefined,
writeBom : boolean = false) : IJsonStatus
> G?
target@H-?@F,
encoding-B<=&-F?!-F
-B&?F),-?$.encoding?
request-B-$,
writeBom@?-BJ:'7%<:'7=@
@F)' -?$-F?-!-
!R-$J)' F-?--B?
4-0$&4-/..4.
??@H-
select(selector : object) : object
C G?selectorF
G?&FJrel:”B$@)'
&J@)' 
)- F- F - @H- - ?  )..createJsonPointer 
)..createRelativeJsonPointer4%G?&J-?G?
J--&-@H--G?J-?F
G?-
?,G???-@F
 !)' !*F- >E(+
) F-FG?
?F$<-B-)' =
L@?F<-B-)' =
nullFG?J??--F?
4--<J=&4--<F=
createJsonPointer() : IJsonSelector
D ?J-@H-?@?)' F$F-?$
-?$
+ J'
interface IJsonNodeCollection {
[enumerable]

length : integer [read-only]

item(key : object) : IJsonNode
add(value : object, name : object = undefined) : IJsonNode
addArray(name : object = undefined) : IJsonNode
addObject(name : object = undefined) : IJsonNode
contains(key : object) : boolean
remove(key : object)
clear()
}
 !)' !*F- >A(+
 ) -BF-F?$@--F)' @
)' )' @H-
length : integer [read-only]
 ?.?$@F--4-.,'7
item(key : object) : IJsonNode
> G?
keyK,%?F?$
?FL@-F)' @H-&F?
F@$??null. -F@H-?
Q-J--@
?F-$F)' @H-&F--J
?-$??null
) F-F-&F--?
?null
?) F-FG?nullF%?--@
--J%4-.,'7
add(value : object, name : object = undefined) : IJsonNode
C G?
valueK?FJ@&-@F
string
number
boolean
null
@H--@2?-B-'@H-<2'=
 !)' !*F- >+(+
nameK$FJ-@)' @H-&$?@-BF
@)' 
!R-J)' @H-.F$$?@
?)' L $?-J4-,'7
?) F-F-nullF-@
addArray(name : object = undefined) : IJsonNode
D G?nameK$FJ-@)' @H-&$?@-BF
@)' 
!R-J)' -? $?-J4-
,'7
?) F-F-nullF-@
addObject(name : object = undefined) : IJsonNode
E G?nameK$FJ-@)' @H-&$?@-BF
@)' 
!R-J)' @H--? $?-J 4
-,'7
?) F-F-nullF-@
contains(key : object) : boolean
A G?
keyK,%?F?$
?FL@-F)' &F?
F@$??false
?F-$F)' @H-&F--J
?-$??false
 !)' !*F- >(+
) F-F-&F--?
?false
? trueFG?-F-?&JF%?
--@??false
remove(key : object)
+ G?
keyK,%?F?$
?FL@-F)' @H-&F?
F@$??false
?F-$F)' @H-&F--J
?-$??false
) F-F-&F--?
?false
!R- $-B@%F$--$F-
$$?@?F$F$@H-F
@?@
clear()
 !R- $-F$--$F-$
$?@?
- J'
interface IJsonNodeAnnotation {

title : IJsonNode [read-only]
description : IJsonNode [read-only]
contentEncoding : IJsonNode [read-only]
contentMediaType : IJsonNode [read-only]
 !)' !*F- C(+
readOnly : IJsonNode [read-only]
writeOnly : IJsonNode [read-only]
defaultNode : IJsonNode [read-only]
examples : IJsonNode [read-only]
}
 . )  F- --   ? F
% )-$.annotate $JF  4-
-$
title : IJsonNode [read-only]
 ? . )  F-F title -JJ& null F
-JJ@-$
description : IJsonNode [read-only]
> ? . )  F-F description -JJ& null F
--JJ@-$
contentEncoding : IJsonNode [read-only]
C ?.) F-FcontentEncoding-JJ&nullF
---JJ@-$
contentMediaType : IJsonNode [read-only]
D ?.) F-FcontentMediaType-JJ&nullF
-$-JJ@-$
readOnly : IJsonNode [read-only]
E ?.) F-FreadOnly-JJ&nullFJ
--JJ@-$
writeOnly : IJsonNode [read-only]
A ?.) F-FwriteOnly-JJ&nullF
--JJ@-$
 !)' !*F- C(+
defaultNode : IJsonNode [read-only]
+ ?.) F-Fdefault-JJ&nullFF?
?-JJ@-$
examples : IJsonNode [read-only]
 ? . )  F-F examples -JJ& null F
$-JJ@-$
/ *
interface IJsonStatus {

success : boolean [read-only]
kind : JsonStatusKind [read-only]
code : integer [read-only]
response : object [read-only]
line : integer [read-only]
column : integer [read-only]
schema : IJsonNode [read-only]
instance : IJsonNode [read-only]
}
 . )? F--@?FF$@@.?F
?%4-/..9!.&4-/..4.&4--$
success : boolean [read-only]
 ?trueFF$$@-$?--F?&Jfalse
kind : JsonStatusKind [read-only]
> ?.%F-@?-@@)?8
code : integer [read-only]
 !)' !*F- C(+
C ?.?F?-$@?%FJ
jsonStatusJessK.?@-B--F)!?,
-line&column&schemainstance-?$
-F--?
jsonStatusSystemK.?'-B-HRESULT-
jsonStatusProvider K.?-?$@?F-?
-@,
response : object [read-only]
D ?.?-J??-$@?%
FJ
jsonStatusJessK.?-F@-B--B@)!
?$
jsonStatusSystem K.?F'$-J?
HRESULT-
jsonStatusProvider K.@H-?$@?F
-?-@,4-/..4.
line : integer [read-only]
E ?.L@F-?$J-
?F-@.?-@jsonStatusJess?%F-
-&)!
column : integer [read-only]
A ?.L@-?$F-?$J-
?F-@.?-@jsonStatusJess?%F-
-&)!
schema : IJsonNode [read-only]
 !)' !*F- C>(+
+ ?.@ 1 B??-@
jsonStatusJess?%FJ
F-$-<)!=--$J
-&nullF-@
F5-<)!=--$
Finstance&nullF-@
4--$
instance : IJsonNode [read-only]
 ?.@ 1 B??-@
jsonStatusJess?%F5-<)!=--
FF-$-B@schema&nullF
-@4--$
3 92
interface IJsonFormat {

indentationSize : integer
useDosNewLines : boolean
useTabs : boolean
placeBracketsOnNewLine : boolean
placeValueOnNewLine : boolean
addNewLineInEmptyBrackets : boolean
addSpaceBeforeColon : boolean
addSpaceAfterColon : boolean
addSpaceInBrackets : boolean
addSpaceAfterComma : boolean
forceEscapeNonAscii : boolean
 !)' !*F- CC(+
forceEscapeNonEascii : boolean
}
 .)0$F--@)' -?$F$?F-)' -?$
4-0$)'
indentationSize : integer
 !R-9?$@F---<U+0020=@?F@
?
useDosNewLines : boolean
> !R- !@@?,'JF$-?$F? true 
J-B@?U20<20=--G?-<U+000D U+000A = “\r\n”=&
JJ-B@20<20=--<LF = U+000A = “\n”=
useTabs : boolean
C !R- F true -@-.:--<U+0009 = “\t”=
&J-BJ?$@F---<U+0020=
?$@F$B@indentationSize
placeBracketsOnNewLine : boolean
D !R-F?@-%<“{“, “[“)-J
placeValueOnNewLine : boolean
E !R-Ftrue?)' )' @H--J
addNewLineInEmptyBrackets : boolean
A !R-FtrueJ$)' )' @H-
addSpaceBeforeColon : boolean
+ !R-Ftrue---<U+0020=@F---$$
F$?)' @H-
addSpaceAfterColon : boolean
 !)' !*F- CD(+
 !R-Ftrue---<U+0020=F---$$
F$?)' @H-
addSpaceInBrackets : boolean
 !R-Ftrue---<U+0020=
F@F-@-%<“{“, “}“, “[“, “]”=FplaceValueOnNewLinefalse
$@-%FaddNewLineInEmptyBracketsfalse
addSpaceAfterComma : boolean
 !R-Ftrue---<U+0020=F-$FplaceValueOnNewLinefalse.
forceEscapeNonAscii : boolean
 !R- F?)' ?-F--<U+0000
U+007F=&--)' J@-?)' -G?-
forceEscapeNonEascii : boolean
> !R-F?)' ?-F!--<U+0000
U+00FF=&!--)' J@-?)' -G?-
5 J"
interface IJsonTools {

createJsonPointer(pointer : string) : IJsonSelector
createRelativeJsonPointer(pointer : string) : IJsonSelector
}
 .).F---$?@).@H-
4--<F=
createJsonPointer(pointer : string) : IJsonSelector
 G?pointer)' @?FG?)' ,'7
 !)' !*F- CE(+
!R- .G??-@H--?-F$-F
) .select$-?F-$G?-) .select
createRelativeJsonPointer(pointer : string) : IJsonSelector
> G?pointer)' @?FG?)' ,'7
!R- .G??-@H--?-F$-F
) .select $-?F-$G?BJ rel:” -
) .select
6 1
interface IJsonPolicy {

nullValue : object
ddaEscape : string
}
 .)-F---@@-B?$
nullValue : object
 !R- ?? null ?R$@--F?
-B-null?@?-$)' null?.F??
-VT_EMPTYJ-?nullINothing5?:-
.  null ?   ? F  )'  ?& F $ F  ? F
) .parentFJJnull$F[@H-MF?F
nullValue /JF)'  null ?J null @?
) -.add$&?FnullValueJ@?
.null?-@@H-F&J&?$-@
?J$% $@-F$)' ?F$&
 !)' !*F- CA(+
-$$?@H-F-F-?$?$
-?-@)-
?.-??F)' null?
ddaEscape : string
> !R- .-B ,-,'7--<,,=F- %-@?$F,,
--@H--F$,,F-@-%) F-.F??
?-$@“_”5?:-$F$4-.,'7
: J
interface IJsonSelector {

expression : string [read-only]

select(from : object) : object
}
 .)-F-F-F-@H-??)' ,'7G?-?
expression : string [read-only]
 ?.G?
select(from : object) : object
> G?from) F-),-?$-?$F--?G?

!R-F$G?B@expression-B@H-?@-G?
$
?,G?$$??-@F
 !)' !*F- C+(+
) F-FG?
?F$<-B-)' =
L@?F<-B-)' =
nullFG?J??--F?
 J82
interface IJsonSchemas {
[enumerable]

length : integer [read-only]

item(key : object) : string
add(
schemaNode : object,
defaultId : string) : IJsonSchema
find(id : string) : IJsonSchema
remove(id : string)
clear()
annotate(
instance : object,
id : string = undefined) : IJsonStatus
validate(
instance : object,
id : string = undefined) : IJsonStatus
onRequestSchema(handler : object)
}
 !)' !*F- C(+
 . )-$ F-F?F-F )-$ -$F
J%JF)' -$4--$&4--$G?&4-
-$
 --F-$$-@$??$--$
> -$J---F--B@F--$M
length : integer [read-only]
C ?.?$@F-$--
item(key : integer) : string
D !R-'@@?-$B@-$--
? .@?-$B? null F??@

add(
schemaNode : object,
defaultId : string) : IJsonSchema
E G?
schemaNodeK) ),-?$F-F-?$
)' -$@--
defaultIdK-@?F?-$“$id”FM@-$F
.--?-$@,?-$,
!R-J-$B@?G?F?,-$?G?,
-$---$,?-J&JF?,J@-
-$,4--$&4--$G?
?J-$@H-
find(id : string) : IJsonSchema
 !)' !*F- D(+
A G?idF?-$,
?)' -$@H-FF?@,null
remove(id : string)
+ G?idF?-$,
!R- $-$ B@ ,F$-- -$F-
?$?@?
clear()
 !R-$-$F$---$F-?$?@
?
annotate(
instance : object,
id : string = undefined) : IJsonStatus
 G?
instance K )  F-F ),-?$ F-F-?$@

idKF-B$?@F-$,--&J,?J@
$-F$“$schema@?F-)' @H-F?-
!R- F$    F   )' - ?  -$
$@--$,F$-$,
--??)-$.onRequestSchema-
$J-$J-?FF,
&$-$FG?,-@-$.
?F?--F?BF-@F) F-
@) .annotationF-F-FJ
J-?  4-
-$
 !)' !*F- D(+
?.?@H-F$
validate(
instance : object,
id : string = undefined) : IJsonStatus
 G?
instance K )  F-F ),-?$ F-F-?$@

idKF-B$?@F-$,--&J,?J@
$-F$“$schema@?F-)' @H-F?-
!R-F$F)' -?-$$@
--$,F$-$,--
??)-$.onRequestSchema-$
J-$J-?FF,&$-$
FG?,-@-$4--$
?.?@H-F$
onRequestSchema(handler : object)
 G?KF
IDispatch-$@@H-$onRequestSchema$
IDispatch-$@@H-J$%-FM$<%,,\524!-=
 !.
-F?-F
handler(schemas : IJsonSchemas, id : string) : IJsonSchema
J
schemasK.-?--F)' -$
idK,FG?-$<F?--=
 !)' !*F- D(+
??K.?)' -$@H-?@schemas.addnullF
G?-$-@?
!R-.-?$-$G?-$,-@F?
--?.?G?-$
-?--?$%@--F?@G?G?F
/J-J -$@ %? ? )-$.contains&
)-$.find)-$.remove-4--$G?
 82
interface IJsonSchema {

id : string [read-only]
standard : JsonSchemaStandard [read-only]
schemas : IJsonSchemas [read-only]
root : IJsonNode [read-only]

annotate(instance : object) : IJsonStatus
validate(instance : object) : IJsonStatus
}
 .)-$F---)' -$@H-$
id : string [read-only]
 ?.)' -$,?J-?G?,J-$--
standard : JsonSchemaStandard [read-only]
> ?)' -$BF-?-$
schemas : IJsonSchemas [read-only]
 !)' !*F- D>(+
C ?.J-$--@H-
root : IJsonNode [read-only]
D ?.-$-?$)' -$-@MJ-?$

annotate(instance : object) : IJsonStatus
E G?instanceK) F-F),-?$F-F-?$@

!R-F$F)' -?-?-$
F-$,-B@“$schema”?F-.?F?--F?
  B F  -@  F  )  F-  @ 
) .annotation F- F-FJ
J-?  4--$

?.?@H-F$
validate(instance : object) : IJsonStatus
A G?instanceK) F-F),-?$F-F-?$@

!R-F$F)' -?-?-$?-?-$
F-$,-B@ “$schema” ?F-  4-
-$
?.?@H-F$
( 00;00<i
 .,-,'7--<,,=F-$-F-J?)' $$@H-
)' @H-?JJ,'7?-4
-2'
 !)' !*F- DC(+
 B$-B@?(JF@H-?
@) domF-$)' ----
-)' FJ-$$@$0$<)-=
document.load({
a: {
b: true,
c: [1, 2],
“_”: null,
圓周率: 3.14159
}
});
var root_dda = document.root.dom;
root_dda.a.b = false;
root_dda.a.c[0] = root_dda.a.c[1] * 2;
.-J$F)' -?$FJ
{
a”: {
“b”: false,
c”: [4, 2],
“_”: null,
圓周率: 3.14159
}
}
 !)' !*F- DD(+
> F,,$)' ?<&?$-&@&?=?
J@-$-?-B-
C F,,--)' <@H-=-,,-%-@?
$@) F-F-?,,@H-.F??F
,,-%?-$@“_”0?M??-$@
$,,-%-@@-? )-.ddaEscape  <
5?:-$F$4-.,'7=-@?%
)' -?$$F?-$-)' -?$&?$
,,F-JJ?) F-F,,F-&F-F
$F?-$--&) -.item$?@?

Test.assertEqual(root_dda._, document.root);
Test.assertEqual(root_dda.a.c._.document, document);

var node_a = document.root.nodes.item(“a”);
Test.assertEqual(root_dda.a._, node_a);
Test.assertEqual(root_dda.a._, root_dda.a[“_”]);
Test.assertNotEqual(root_dda.a._., node_a.nodes.item(“_”));
D F??$4-?-)' $-&-@
--F$,,F-@$-B%?-@
?-4-4.0E2!B-?-@
Test.assertEqual(root_dda.a[“圓周率”], 3.14159);
 !)' !*F- DE(+
( 
( 
 ,JsonEssentials_###.JsonEssentials.1
J
###K?G?,?
1K7)'-$F?$@&5
 2,?G?F-,-@@F$1JF$F??F
HKEY_CLASSES_ROOT\JsonEssentials_###.JsonEssentials.1\CLSID%
> )!F?F-F-@H-
( 0*2
 ,JsonEssentials_###.JsonDocument.1
J
###K?G?,?
1K7)'-$F?$@&5
 2,?G?F-,-@@F$1JF$F??F
HKEY_CLASSES_ROOT\JsonEssentials_###.JsonDocument.1\CLSID%
> ),-?$F?F-F-@H-
(( 82
 ,JsonSchemas_###.JsonSchemas.1
J
 !)' !*F- DA(+
###K?G?,?
1K7)'-$F?$@&5
 2,?G?F-,-@@F$1JF$F??F
HKEY_CLASSES_ROOT\JsonEssentials_###.JsonSchemas.1\CLSID%
> )-$F?F-F-@H-
(+ "
 ,JsonTools_###.JsonTools.1
J
###K?G?,?
1K7)'-$F?$@&5
 2,?G?F-,-@@F$1JF$F??F
HKEY_CLASSES_ROOT\JsonEssentials_###.JsonTools.1\CLSID%
> ).F?F-F-@H-
+ 0'
 $$F)' ($-$(F$-B(?-
 ,  ?--  - @ ?? @
:?J?
+ 912
 .0$J@)' F$(B$@H--B
@-@ $0& $-4-0$
 F-?B$@H--$@-$@-?
--J
> .-BB$?J“file://”B
 !)' !*F- D+(+
C .sourcetarget?$Floadsave$F),-?$) F-
?@B$@H-?
D .request?$Floadsave$F),-?$) F-?
$?@-B
E F$--?J$&J-BB$@H-
G?F?jsonStatusSystem<)?=
A .?F),-?$.locationF?--F?)' -?$?0$
F?--B$BJ“file://”
+ 4%
 ./J@)' F$($@H--B@42
/..-4-/..9!.&4-/..4.
 .-B42$?J“http://”“https://”B
> .sourcetarget?$Floadsave$F),-?$) F-
?@42?
C . request ?$F load  save $F ),-?$  )  B
/..  -   -@ G?F$ . ?$ - @ ),-?$ 
) F-&J@?source?$F),-?$.load-
-B?)' ,'7F$F?$-B$)' ?-/..-
J @  J  F? -B? ? 0 ?- ? -   @   
-B?) ),-?$F-F-B?,'7?
Frequest?$
D F$--?J$&J -B$@H-
G?F?jsonStatusSystem<)?=
E F /..--? J $  J -B $ @H- G?
F?jsonStatusProvider<)?=/..?-
 !)' !*F- D(+
??-/..?-FF?G?C&
:G?
A 4?--F?-$F@)' F?-@
?F/..F$response”G?-B?<G?F$=F
F?
+ .?F),-?$.locationF?--F?)' -?$?/
?42F$J--?$
+ =*2
 9-F$
{
method”: <string>,
query”: {
<name>: <value>,
...
},
“form”: {
<name>: <value>
...
},
“headers”: {
<name>: <value>,
...
},
“timeouts”: {
resolve”: <integer>
connect”: <integer>
send”: <integer>
 !)' !*F- E(+
receive”: <integer>
},
response”: {
status”: <boolean>
“headers”: <boolean>,
“body”: <”skip”|”text”|”base64”|”json”>
}
}
 .?$F??/..G?-$&$$F
-$-F?J/..G?-B-&M?-?
-$?@&J$@
> FG?JG?&)' @?&G?
JContent-Typeapplication/json?form
C method?-/..$$<0A>G?7=@?F
/..G?:F?M9!.F$4.FJ$&@?-@
?/..$$
D query --F-$(?-F-?$9!.G?
$@42B@0>+E;?
E form--F-%(?-F/..F$B
@0+EA0$@04/.72Fform$
FG?G?&)' @?&G?
JContent-Typeapplication/x-www-form-urlencoded
FG?JG?&)' @?&G?
J Content-Type  multipart/form-data, )' -@B@
name=“json”filename=”data.json”
 !)' !*F- E(+
A headers--F-$(?-F-?$/..
@/..G?B@0A>G?/0
+ timeouts$B.($?F$???
F???$??$-?$?-?
resolveK$?F$.F??$$?&
-?B
connectK$?F@.(--J.F??E
<E-=
sendK$?F?.(-%.F??><>
-=
receiveK$?F-?.(-%F$.F??
><>-=
 response $-J/..J@? ?--F?
G?-$F$$--&J@@
)?.response),-?$@H-FJF$.FJ
$?
status K?-/..?-J@--?$&
F$
headers K true -   /.. $(?  J @ -- 
headers$&F$F?-@F
$$
bodyK-FJ/..@J@--F-$
?--F? ?-@-F$)' -?$FJ F$ 
--@)?.response),-?$.??-?
skipK@--MF??$Fbody$
textK@--?
 !)' !*F- E(+
base64K@--@J--:EC
jsonK@--&)' -?$FF)?.kind
jsonStatusJess)?.code%F)!?
+ %2
 F/..--$@$FG?<G?F$=
G??--F?&)?.response?),-?$F-
F)' -?$@H-FJ-F$
{
status”: {
code”: <integer>,
“text”: <string>
},
“headers”: {
<name>: <value>,
...
},
“body”: <string|json>
}
 status$Fresponse.statustrueG?&F-B
codeK/..?-0A>?
textK$-J??-?
> headers$Fresponse.headerstrueG?&F-B$
)' @H--$(?F/..?
 !)' !*F- E>(+
C body $ F response.body -B  G?  ?   %
,response.body?-@J&:EC-
)' F@&FG?F$F-
+( 2
 @H- $ F--@-B?-F)' F
FJ)' ?-@H-???@-B-&F
R--?$F@H-@????$F)' F$
-$@-B$
 F$('--??F?jsonStatusSystem<)?8=
> .?F ),-?$.location F?--F?)' -?$?$
J“[stream]”
C .request?$Floadsave$F),-?$) F-?
$?@-B
++ 
 )' -@??-F)' FF “json://”B
4-)' 
 .&-@?FJ
> .?F),-?$.locationF?--F?)' -?$?)
J“[json]”
C .request?$Floadsave$F),-?$) F-?
$?@-B
+- ,&*&S%)O#>;,<
 2---@H-F?-B-)' ?-
     '7 -$@ < F$ IUnknown  F VARIANT =  
$@'7-$@J$-&F$)-5?:-
 !)' !*F- EC(+
@H-  &  !. & - ?- @H-  $ @  @   R
J-B
IEnumVARIANT%-F--)' 
IDispatch@H-%-F--)' @H-
?-@?@)' ?
4-2'
 .&-@?FJ
> .?F),-?$.locationF?--F?)' -?$F
J“[object]”
C ----2'-)' ?“[cycle]”
-?@%
D .request?$Floadsave$F),-?$) F-?
$?@-B
+/ &1
 .J@)' F$(?-B@
F??J“reg://”B4-
 .B-$F$?-F%$.FJ%
$?-@1J,8B8
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
HKEY_PERFORMANCE_DATA
HKEY_PERFORMANCE_TEXT
 !)' !*F- ED(+
HKEY_PERFORMANCE_NLSTEXT
HKEY_CURRENT_CONFIG
HKEY_DYN_DATA
HKEY_CURRENT_USER_LOCAL_SETTINGS
HKCR<FHKEY_CLASSES_ROOT=
HKCU<FHKEY_CURRENT_USER=
HKLM<FHKEY_LOCAL_MACHINE=
> .  -$F$?-F !9\: " ?$ @
%-B@?-$
C .sourcetarget?$Floadsave$F),-?$) F-
?@?
D .request?$Floadsave$F),-?$) F-
B-B?)' ,'7-@),-?$) F-&?source
?$F),-?$.load-)' -B?F$.-B?
)' ?FJF$
{
“forceCreateKey”: <boolean>
}
1forceCreateKeyBJ%?@?$--J$
--<true=&<false=.F??false
E F$ --?J$&J  -B ? 
G?F?jsonStatusSystem<)?=
A .?F),-?$.locationF?--F?)' -?$?
F??BJ“reg://”
 !)' !*4 EE(+
( ?
( H%
( %
.FJ@F-@H-??-F--F@@H-.ORDER_ID
-$?@-J,?-??-
Jess = (function () {
return {
orderId: ORDER_ID,
version: {
major: 1,
minor: 2,
patch: 1
},
features: {
schema: 1
},
library: null,
// Initializes JSON Essential library.
init: function () {
// Create a new JsonEssentials class instance.
this.library = new ActiveXObject('JsonEssentials_' + this.orderId
+ '.JsonEssentials.' + this.version.major);
 !)' !*4 EA(+
// The very first call to the library has to be unlocking using
// the license token supplied from command line.
if (!this.library.unlock(Test.getLicenseToken())) {
var msg = 'ERROR: Unable to unlock JSON Essentials';
Test.message(msg);
throw Error(msg);
}
// As the default JSON 'null' value is not compatible with
// JScript null value it has to be overridden.
this.library.tools.policy.nullValue = null;
},
// The method creates a new instance of the JSON document object.
createDocument: function () {
return this.library.createDocument();
// JSON Document object can also be created using its
// class identifier, but it's a slower method:
// return new ActiveXObject('JsonEssentials_' + this.orderId
// + '.JsonDocument.' + this.version.major);
},
// The method creates a new JsonTools class instance.
createTools: function () {
return this.library.tools;
// JSON Tools object can also be created using its class
 !)' !*4 E+(+
// identifier, but it's a slower method:
// return new ActiveXObject('JsonEssentials_' + this.orderId
// + '.JsonTools.' + this.version.major);
},
// The method creates a new JsonSchemas class instance.
createSchemas: function () {
return this.library.createSchemas();
// JSON Schemas object can also be created using its class
// identifier, but it's a slower method:
// return new ActiveXObject('JsonEssentials_' + this.orderId
// + '.JsonSchemas.' + this.version.major);
}
};
})();
Jess.init();
( @
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class SomeObject {
public object c1 { get; set; }
public object c2 { get; set; }
}
 !)' !*4 E(+
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class RootObject {
public bool a { get; set; }
public double b { get; set; }
public object c { get; set; }
public object[] d { get; set; }
}
(( .*A
(( 2%10*2'

(( 20*2'
Option Explicit
Option Base 0
Public a As Variant
Public b As Variant
Public c As Variant
Public d As Variant
Public e As Variant
Public f As Variant
Public g As Variant
Public h As Variant
 !)' !*4 A(+
( ?B0
.$$J@?)' ,'7
( %
 !
var document = Jess.createDocument();
"# 
#$%!
var root = document.makeEmptyObject();
"&
'
((&)
((&*+,)
((&-'(%(&((./
.
root.nodes.add(true, 'a');
root.nodes.add(123, 'b');
root.nodes.addObject('c');
root.nodes.addArray('d').nodes.add('abc');
0!
Test.assertEqual(document.json, '{\"a\":true,\"b\":123,\"c\":[{\"x\":\"y\"}]}');
( @
 !
 !)' !*4 A(+
var document = Jess.createDocument();
"# 
#$%!
var root = document.makeEmptyObject();
"&
'
((&)
((&*+,)
((&-'(%(&((./
.
root.nodes.add(true, "a");
root.nodes.add(123, "b");
root.nodes.addArray("c").nodes.addObject().nodes.add("y", "x");
0!
Test.assertEqual(document.json, "{\"a\":true,\"b\":123,\"c\":[{\"x\":\"y\"}]}");
(( .*A
1 !
Dim document As JsonDocument
Set document = New JsonDocument
1"# 
1#$%!
Dim root As IJsonNode
 !)' !*4 A(+
Set root = document.makeEmptyObject
1"&
1'
1((&)
1((&*+,)
1((&-'(%(&((./
1.
root.nodes.Add True, "a"
root.nodes.Add 123, "b"
root.nodes.addArray("c").nodes.addObject().nodes.Add "y", "x"
10!
Test.assertEqual document.json, "{""a"":true,""b"":123,""c"":[{""x"":""y""}]}"
(( ?B0
.$$J)' -?$-B@
(( %
 !
var document = Jess.createDocument();
23!
var json = '{\"a\":true,\"b\":123,\"c\":[{\"x\":\"y\"}]}';
document.parse(json);
0!
 !)' !*4 A>(+
Test.assertEqual(document.json, json);
4#33$!
document.load('json://' + json);
0!
Test.assertEqual(document.json, json);
(( @
 !
var document = Jess.createDocument();
23!
var json = "{\"a\":true,\"b\":123,\"c\":[{\"x\":\"y\"}]}";
document.parse(json);
0!
Test.assertEqual(document.json, json);
4#33$!
document.load("json://" + json);
0!
Test.assertEqual(document.json, json);
 !)' !*4 AC(+
((( .*A
1 !
Dim document As JsonDocument
Set document = New JsonDocument
123!
Dim json As String
json = "{""a"":true,""b"":123,""c"":[{""x"":""y""}]}"
document.parse json
10!
Test.assertEqual document.json, json
14#33$!
document.Load "json://" + json
10!
Test.assertEqual document.json, json
(+ ?B"0
.$$J)' ,'7
(+ %
 !
var document = Jess.createDocument();
!
 !)' !*4 AD(+
document.parse('{\"a\":true,\"b\":123,\"c\":[{\"x\":\"y\"}]}');
var count = 0;
var traverse;
5##
$36!
traverse = function(node) {
7#!
++count;
8$#
!
if(node.isContainer) {
43#!
for(var i = 0; i < node.nodes.length; ++i) {
9$$#
%!
traverse(node.nodes.item(i));
}
}
};
$#!
traverse(document.root);
:##!
Test.assertEqual(count, 6);
 !)' !*4 AE(+
5##
3
3i#!
traverse = function(dom) {
for(var key in dom) {
7#!
++count;
#!
var childDom = dom[key];
7#%DDA Escape!
if(childDom._) {
9$$#!
traverse(childDom);
continue;
}
}
};
$#!
count = 1;
traverse(document.root.dom);
:##!
Test.assertEqual(count, 6);
 !)' !*4 AA(+
(+ @
5##
$36!
private static int TraverseNode(IJsonNode node) {
int count = 1;
8$#
!
if (node.isContainer) {
43#!
for (var i = 0; i < node.nodes.length; ++i) {
9$$#
%!
count += TraverseNode(node.nodes[i]);
}
}
return count;
}
5##
3
3i#!
private static int TraverseNodeDom(dynamic dom) {
int count = 1;
foreach (dynamic childNode in dom) {
8$#
 !)' !*4 A+(+
!
if (childNode.isContainer) {
9$$#!
count += TraverseNodeDom(childNode.dom);
continue;
}
++count;
}
return count;
}
 !
var document = Jess.createDocument();
!
document.parse("{\"a\":true,\"b\":123,\"c\":[{\"x\":\"y\"}]}");
$#!
var count = TraverseNode(document.root);
:##!
Test.assertEqual(count, 6);
$#!
count = TraverseNodeDom(document.root.dom);
 !)' !*4 A(+
:##!
Test.assertEqual(count, 6);
(+( .*A
15##
1$36!
Private Function CountJsonNodes(node As IJsonNode) As Integer
Dim count As Integer
count = 1
18$#
1!
If node.isContainer Then
143#!
Dim i As Integer
For i = 0 To node.nodes.length - 1
19$$#
1%!
count = count + CountJsonNodes(node.nodes(i))
Next
End If
CountJsonNodes = count
End Function
15##
13
 !)' !*4 +(+
13#!
Private Function CountDomNodes(dom) As Integer
Dim count As Integer
count = 1
143!
Dim node
For Each node In dom
18$#
1!
If node.isContainer Then
19$$#!
count = count + CountDomNodes(node.dom)
Else
count = count + 1
End If
Next
CountDomNodes = count
End Function
10!
Dim tools As JsonTools
Set tools = New JsonTools
tools.policy.ddaEscape = "NODE_"
1 !
Dim document As JsonDocument
 !)' !*4 +(+
Set document = New JsonDocument
1!
document.parse "{""a"":true,""b"":123,""c"":[{""x"":""y""}]}"
1$#!
Dim count As Integer
count = CountJsonNodes(document.root)
1:##!
Test.assertEqual count, 6
count = CountDomNodes(document.root.dom)
Test.assertEqual count, 6
(- ?B92
.$$J-B?)' ??F$?F)' -?$
(- %
 !
var document = Jess.createDocument();
!
document.parse('{\"a\":true,\"b\":123,\"c\":[{\"x\":\"y\"}]}');
3#!
var format = document.format;
 !)' !*4 +(+
format.indentationSize = 2;
format.useTabs = false;
format.placeBracketsOnNewLine = true;
format.placeValueOnNewLine = true;
format.addSpaceBeforeColon = true;
format.addSpaceAfterColon = true;
format.addSpaceInBrackets = true;
0#3
#3!
Test.assertEqual(document.json,
'{\n' +
' "a" : true,\n' +
' "b" : 123,\n' +
' "c" :\n' +
' [\n' +
' {\n' +
' "x" : "y"\n' +
' }\n' +
' ]\n' +
'}'
);
(- @
 !
var document = Jess.createDocument();
 !)' !*4 +>(+
!
document.parse("{\"a\":true,\"b\":123,\"c\":[{\"x\":\"y\"}]}");
3#!
var format = document.format;
format.indentationSize = 2;
format.useTabs = false;
format.placeBracketsOnNewLine = true;
format.placeValueOnNewLine = true;
format.addSpaceBeforeColon = true;
format.addSpaceAfterColon = true;
format.addSpaceInBrackets = true;
0#3
#3!
Test.assertEqual(document.json,
"{\n" +
" \"a\" : true,\n" +
" \"b\" : 123,\n" +
" \"c\" :\n" +
" [\n" +
" {\n" +
" \"x\" : \"y\"\n" +
" }\n" +
" ]\n" +
"}"
);
 !)' !*4 +C(+
(-( .*A
1 !
Dim document As JsonDocument
Set document = New JsonDocument
1!
document.parse "{""a"":true,""b"":123,""c"":[{""x"":""y""}]}"
13#!
Dim format As IJsonFormat
Set format = document.format
format.indentationSize = 2
format.useTabs = False
format.placeBracketsOnNewLine = True
format.placeValueOnNewLine = True
format.addSpaceBeforeColon = True
format.addSpaceAfterColon = True
format.addSpaceInBrackets = True
10#3
1#3!
Test.assertEqual document.json, _
"{" + Chr(10) + _
" ""a"" : true," + Chr(10) + _
" ""b"" : 123," + Chr(10) + _
" ""c"" :" + Chr(10) + _
" { }," + Chr(10) + _
" [" + Chr(10) + _
 !)' !*4 +D(+
" {" + Chr(10) + _
" ""x"" : ""y""" + Chr(10) + _
" }" + Chr(10) + _
" ]" + Chr(10) + _
"}"
(/ ?B';C<
.$$J-F$)' -?$?)' )' 
-B@&J-$
(/ %
 !
var document = Jess.createDocument();

document.parse('{\"a\":true,\"b\":123,\"c\":{},\"d\":[\"abc\"]}');
2#113
3#!
var node_abc = document.root.select('/d/0');
113#$
2#11$32
81139$
!
var node_a = node_abc.select('rel:2/a');
 !)' !*4 +E(+
0$!
Test.assertEqual(node_abc.json, '\"abc\"');
Test.assertEqual(node_a.json, 'true');
(/ @
 !
var document = Jess.createDocument();

document.parse("{\"a\":true,\"b\":123,\"c\":{},\"d\":[\"abc\"]}");
2#113
3#!
var node_abc = document.root.select("/d/0");
113#$
2#11$32
81139$
!
var node_a = node_abc.select("rel:2/a");
0$!
Test.assertEqual(node_abc.json, "\"abc\"");
Test.assertEqual(node_a.json, "true");
 !)' !*4 +A(+
(/( .*A
1 !
Dim document As JsonDocument
Set document = New JsonDocument
1!
document.parse "{""a"":true,""b"":123,""c"":{},""d"":[""abc""]}"
12#113
13#!
Dim node_abc As IJsonNode
Set node_abc = document.root.Select("/d/0")
1113#$
12#11$32
181139$
1!
Dim node_a As IJsonNode
Set node_a = node_abc.Select("rel:2/a")
10$!
Test.assertEqual node_abc.json, """abc"""
Test.assertEqual node_a.json, "true"
(3 ?B';<
.$$J-F$)' -?$?-$)' )'
&F-$
 !)' !*4 ++(+
(3 %
 !
var document = Jess.createDocument();
5 !
var tools = Jess.createTools();
;#3
2#111!
var pointer = tools.createJsonPointer('/d/0');
;9$#3
11#3+$#
%#!
var relativePointer = tools.createRelativeJsonPointer('2/a');
!
document.parse('{\"a\":true,\"b\":123,\"c\":{},\"d\":[\"abc\"]}');
0%!
var node_abc = document.root.select(pointer);
0%9$$!
var node_a = node_abc.select(relativePointer);
0$!
Test.assertEqual(node_abc.json, '\"abc\"');
Test.assertEqual(node_a.json, 'true');
 !)' !*4 +(+
(3 @
 !
var document = Jess.createDocument();
5 !
var tools = Jess.createTools();
;#3
2#111!
var pointer = tools.createJsonPointer("/d/0");
;9$#3
11#3+$#
%#!
var relativePointer = tools.createRelativeJsonPointer("2/a");
!
document.parse("{\"a\":true,\"b\":123,\"c\":{},\"d\":[\"abc\"]}");
0%!
var node_abc = document.root.select(pointer);
0%9$$!
var node_a = node_abc.select(relativePointer);
0$!
 !)' !*4 (+
Test.assertEqual(node_abc.json, "\"abc\"");
Test.assertEqual(node_a.json, "true");
(3( .*A
1 !
Dim document As JsonDocument
Set document = New JsonDocument
15 !
Dim tools As JsonTools
Set tools = New JsonTools
1;#3
12#111!
Dim pointer As IJsonSelector
Set pointer = tools.CreateJsonPointer("/d/0")
1;9$#3
111#3+$#
1%#!
Dim relativePointer As IJsonSelector
Set relativePointer = tools.createRelativeJsonPointer("2/a")
1!
document.parse "{""a"":true,""b"":123,""c"":{},""d"":[""abc""]}"
10%!
 !)' !*4 (+
Dim node_abc As IJsonNode
Set node_abc = document.root.Select(pointer)
10%9$$!
Dim node_a As IJsonNode
Set node_a = node_abc.Select(relativePointer)
10$!
Test.assertEqual node_abc.json, """abc"""
Test.assertEqual node_a.json, "true"
(5 ?B912%'
.$$J?0$F)' F$B
-B@
(5 %
 !
var document = Jess.createDocument();
!
var json = '{\"a\":true,\"b\":123,\"c\":[{\"x\":\"y\"}]}';
document.parse(json);
$! 
3<5=;*>3!
document.save('file://test.json', 'utf-16');
 !)' !*4 (+
 
3$!
document.makeEmptyObject();
4$$!
document.load('file://test.json', 'utf-16');
0!
Test.assertEqual(document.root.json, json);
Test.assertEqual(document.encoding, 'utf-16');
Test.assertTrue(0 < document.location.indexOf('test.json'));
(5 @
 !
var document = Jess.createDocument();
!
var json = "{\"a\":true,\"b\":123,\"c\":[{\"x\":\"y\"}]}";
document.parse(json);
$! 
3<5=;*>3!
document.save("file://test.json", "utf-16");
 
3$!
document.makeEmptyObject();
 !)' !*4 >(+
4$$!
document.load("file://test.json", "utf-16");
0!
Test.assertEqual(document.root.json, json);
Test.assertEqual(document.encoding, "utf-16");
Test.assertTrue(0 < document.location.IndexOf("test.json"));
(5( .*A
1 !
Dim document As JsonDocument
Set document = New JsonDocument
1!
Dim json As String
json = "{""a"":true,""b"":123,""c"":[{""x"":""y""}]}"
document.parse json
1$! 3<5=;*>3!
document.save "file://test.json", "utf-16"
1 
13$!
document.makeEmptyObject
14$$!
 !)' !*4 C(+
document.Load "file://test.json", "utf-16"
10!
Test.assertEqual document.root.json, json
Test.assertEqual document.encoding, "utf-16"
Test.assertTrue 0 < InStr(document.location, "test.json")
(6 ?B&1%'
.$$J?F)' F$?
-B@
(6 %
 !
var document = Jess.createDocument();
!
var json = '{\"a\":true,\"b\":123,\"c\":[{\"x\":\"y\"}]}';
document.parse(json);
$233<5=;*>3!
var regPath = 'reg://HKCU\\Software\\Pinery\\JsonEssentials_' + Jess.orderId;
document.save(regPath, 'utf-16');
 
3$!
document.makeEmptyObject();
 !)' !*4 D(+
4$$!
document.load(regPath, 'utf-16');
0!
Test.assertEqual(document.root.json, json);
Test.assertEqual(document.encoding, 'utf-16');
Test.assertEqual(document.location, regPath);
(6 @
 !
var document = Jess.createDocument();
!
var json = "{\"a\":true,\"b\":123,\"c\":[{\"x\":\"y\"}]}";
document.parse(json);
$233<5=;*>3!
var regPath = "reg://HKCU\\Software\\Pinery\\JsonEssentials_" + Jess.Library.id;
document.save(regPath, "utf-16");
 
3$!
document.makeEmptyObject();
4$$!
document.load(regPath, "utf-16");
 !)' !*4 E(+
0!
Test.assertEqual(document.root.json, json);
Test.assertEqual(document.encoding, "utf-16");
Test.assertEqual(document.location, regPath);
(6( .*A
10#
Dim library As JsonEssentials
Set library = New JsonEssentials
1 !
Dim document As JsonDocument
Set document = New JsonDocument
1!
Dim json As String
json = "{""a"":true,""b"":123,""c"":[{""x"":""y""}]}"
document.parse json
1$233<5=;*>3!
Dim regPath As String
regPath = "reg://HKCU\Software\Pinery\JsonEssentials_" + Str(library.id)
document.save regPath, "utf-16"
1 
' loading the saved document reconstructs the DOM.
document.makeEmptyObject
 !)' !*4 A(+
14$$!
document.Load regPath, "utf-16"
10!
Test.assertEqual document.root.json, json
Test.assertEqual document.encoding, "utf-16"
Test.assertEqual document.location, regPath
(: ?B%'
.$$J?)' F)' F$-B?--
(: %
 !
var document1 = Jess.createDocument();
var document2 = Jess.createDocument();
var json = '{\"a\":true,\"b\":123,\"c\":[{\"x\":\"y\"}]}';
4#22!
document1.load('json://' + json);
3!
document2.parse(json);
06!
Test.assertTrue(document1.root.equals(document2.root));
 !)' !*4 +(+
(: @
 !
var document1 = Jess.createDocument();
var document2 = Jess.createDocument();
var json = "{\"a\":true,\"b\":123,\"c\":[{\"x\":\"y\"}]}";
4#22!
document1.load("json://" + json);
3!
document2.parse(json);
06!
Test.assertTrue(document1.root.equals(document2.root));
(:( .*A
1 !
Dim document1 As JsonDocument
Set document1 = New JsonDocument
Dim document2 As JsonDocument
Set document2 = New JsonDocument
14#22!
Dim json As String
json = "{""a"":true,""b"":123,""c"":[{""x"":""y""}]}"
 !)' !*4 (+
document1.Load "json://" + json
13!
document2.parse json
106!
Test.assertTrue document1.root.equals(document2.root)
( ?B,%'
.$$-@F?2'F,'7F$?@H-$
$F,'7FJ@H-F$-
( %
 !
var document = Jess.createDocument();
43#$ !
document.load({
a: true,
b: 123,
c: {},
d: [ 'abc' ]
});
?#!
var dom = document.root.dom;
 !)' !*4 (+
01111!
Test.assertTrue(dom.a);
#$#113!
dom.a = false;
011*+,!
Test.assertEqual(dom.b, 123);
711+3$#!
dom.b += 2;
Test.assertEqual(dom.b, 125.0);
118 3#$ !
dom.c = {
c1: 1,
c2: 2
};
#2#113!
dom.d[0] = 'ABC';
8113#$$ !
var d = dom.d._;
d.nodes.add(321);
d.nodes.add([ 'XYZ', null ]);
Test.message(document);
 !)' !*4 (+
&

'((&-("(),+*)-(@AB()//)((&#)((&*+C)((&'(*(&*)(+(&+..
( @
 !
var document = Jess.createDocument();
43#!05 !
document.load(new RootObject {
a = true,
b = 123,
c = null,
d = new object[] { "abc" }
});
?#!
var dom = document.root.dom;
01111!
Test.assertTrue(dom.a);
#$#113!
dom.a = false;
011*+,!
 !)' !*4 (+
Test.assertEqual(dom.b, 123.0);
711+3$#!
dom.b += 2;
Test.assertEqual(dom.b, 125.0);
118 3#!05 !
dom.c = new SomeObject {
c1 = 1,
c2 = 2
};
#2#113!
dom.d[0] = "ABC";
8113#!05$ !
var d = dom.d._;
d.nodes.add(321);
d.nodes.add(new object[] { "XYZ", null });
Test.message(document.json);
&

'((&-("(),+*)-(@AB()//)((&#)((&*+C)((&'(*(&*)(+(&+..
 !)' !*4 >(+
(( .*A
1 !
Dim document As JsonDocument
Set document = New JsonDocument
Dim nodes As IJsonNodeCollection
1 !
Dim model As SomeDocumentModel
Set model = New SomeDocumentModel
model.a = True
model.b = 123
Set model.c = New EmptyDocumentModel
model.d = Array("abc")
14# !
document.Load model
19$!
Set nodes = document.root.nodes
nodes.Remove "e"
nodes.Remove "f"
nodes.Remove "g"
nodes.Remove "h"
1?#!
Dim dom
Set dom = document.root.dom
 !)' !*4 C(+
101111!
Test.assertTrue dom.a
1#$#113!
dom.a = False
1011*+,!
Test.assertEqual dom.b, 123
1711+3$#!
dom.b = dom.b + 2
Test.assertEqual dom.b, 125
1118 3# !
Set dom.c = New SomeDocumentModel
Set nodes = document.root.nodes("c").nodes
nodes("a").dom = 1
nodes("b").dom = 2
19$!
nodes.Remove "c"
nodes.Remove "d"
nodes.Remove "e"
nodes.Remove "f"
nodes.Remove "g"
nodes.Remove "h"
 !)' !*4 D(+
1#2#113!
dom.d(0) = "ABC"
18113#$$ !
Set nodes = document.root.nodes("d").nodes
nodes.Add 321
nodes.Add Array("XYZ", Null)
Test.message document.json
1&
1
1'((&-("(),+*)-(@AB()//)((&#)((&*+C)((&'((&*)((&+..
( ?B4""$"
.$$J)' F$/..
( %
 !
var document = Jess.createDocument();
4#D55!
var status = document.load('http://postman-echo.com/get');
Test.assertTrue(status.success);
Test.message(document);
 !)' !*4 E(+
&

'(3(&'.)((&'((&(;!()(%;#8;(&(()(%;#8;
(&(EF()(%;G;;(&(9H*;>F,ICE;JJC+#I#>+JJFJ,+>#,()((&(KK()(;
3(&(GJ!FLMN,+M
ND!ND96!CO(.)((&(&;!3(.
( @
 !
var document = Jess.createDocument();
4#D55!
var status = document.load("http://postman-echo.com/get");
Test.assertTrue(status.success);
Test.message(document);
&

'(3(&'.)((&'((&(;!()(%;#8;(&(()(%;#8;
(&(EF()(%;G;;(&(9H*;>F,ICE;JJC+#I#>+JJFJ,+>#,()((&(KK()(;
3(&(GJ!FLMN,+M
ND!ND96!CO(.)((&(&;!3(.
(( .*A
1 !
Dim document As JsonDocument
Set document = New JsonDocument
 !)' !*4 A(+
14#D55!
Dim status As IJsonStatus
Set status = document.Load("http://postman-echo.com/get")
Test.assertTrue status.success
Test.message document.json
1&
1
1'(3(&'.)((&'((&(;!()(%;#8;(&(()(%;#8;
(&(EF()(%;G;;(&(9H*;>F,ICE;JJC+#I#>+JJFJ,+>#,()((&(KK()(;
3(&(GJ!FN,+
ND!ND96!C(.)((&(&;!3(.
(( ?B4""?"
.$$J?)' /..4.J-F/..$&G?&F$
&-?$/..&.$?/..?-&
@J)' -?$
(( %
 !
var document = Jess.createDocument();
4#$ !
document.load({
a: true,
b: 123,
 !)' !*4 +(+
c: {},
d: [ 'abc' ]
});
$2D55<56
<5=;E!
var status = document.save('http://postman-echo.com/put', 'utf-8', {
#D55%!
method: 'PUT',
D556!
query: {
a: "#a",
b: "#b",
c: "#c"
},
D55#!
form: {
d: "#d",
e: "#e",
f: "#f"
},
D55!
headers: {
jess1: '#1',
jess2: '#2',
 !)' !*4 (+
jess3: '#3'
},
$#5!
timeouts: {
resolve: 5000,
connect: 5000,
send: 5000,
receive: 5000
},
96D55)
D55D55!
response: {
status: true,
headers: true,
body: 'json'
}
});
0#!
Test.assertTrue(status.success);
Test.message(status.response.json);
&

'((&'((&+FF)(%(&(P(.)((&'((&(;$()(:(&(;
03()((&()3Apr+F+**1&+F&FQ?5()(;43(&(>QE()(;(&(!H
 !)' !*4 (+
R,#,9IF,ED 3NG9%<F9%D S <5!P#5C4PTTQR+=T0G+@,4+"BI7*R+"?+*#FM
HMD()(;5(&( M
H#;E()(053(&(NU(+>;9Q=J0P=:V#CJ 46B83U((.)((&'(3(&
'((&(()((&(()((&((.)((&'.)( (&)(2(&'(! (&(&;
M>J)7 F:47 % 7I47 7=A#THH(.)(#(&
'((&(()((&(()(#(&(#(.)((&'((&(;!()(%;#8;(&(()(%;
#8;(&(EF()( +(&(+()(;3(&(Q>J()(%;G;;(&(9H*;>FFJQ;
Q>QC*#I*+,E+FC()(;(&(#;M
HE@CQ*I@5BFA8PN+0E77"?G7354JQI"3F()((&(K
K()(;3(&(GJ!FLMN,+M
ND!ND96!CO()( *(&(*()( ,(&(,(.)((&(&;!WHR+,XH
R+,XHR+,(..
(( @
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class HttpQueryParams {
public object a { get; set; }
public object b { get; set; }
public object c { get; set; }
}
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class HttpFormFields {
public object d { get; set; }
public object e { get; set; }
public object f { get; set; }
}
 !)' !*4 (+
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class HttpHeaders {
public object jess1 { get; set; }
public object jess2 { get; set; }
public object jess3 { get; set; }
}
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class HttpTimeouts {
public int resolve { get; set; }
public int connect { get; set; }
public int send { get; set; }
public int receive { get; set; }
}
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class HttpResponse {
public bool status { get; set; }
public bool headers { get; set; }
public string body { get; set; }
}
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class HttpRequest {
 !)' !*4 (+
public string method { get; set; }
public HttpQueryParams query { get; set; }
public HttpFormFields form { get; set; }
public HttpHeaders headers { get; set; }
public HttpTimeouts timeouts { get; set; }
public HttpResponse response { get; set; }
}
]
 !
var document = Jess.createDocument();
4#!05 !
document.load(new RootObject {
a = true,
b = 123,
c = { },
d = new object[] { "abc" }
});
$2D55<56
<5=;E!
var status = document.save("http://postman-echo.com/put", "utf-8", new HttpRequest {
#D55%!
method = "PUT",
D556!
query = new HttpQueryParams {
a = "#a",
 !)' !*4 >(+
b = "#b",
c = "#c"
},
D55#!
form = new HttpFormFields {
d = "#d",
e = "#e",
f = "#f"
},
D55!
headers = new HttpHeaders {
jess1 = "#1",
jess2 = "#2",
jess3 = "#3"
},
$#5!
timeouts = new HttpTimeouts {
resolve = 5000,
connect = 5000,
send = 5000,
receive = 5000
},
96D55)
D55D55!
 !)' !*4 C(+
response = new HttpResponse {
status = true,
headers = true,
body = "json"
}
});
0#!
Test.assertTrue(status.success);
Test.message(status.response.json);
&

'((&'((&+FF)(%(&(P(.)((&'((&(;$()(:(&(;
03()((&()F,+F+**C&,F&*F?5()(;43(&(>QE()(;(&(!H
R,#;>>N6BS+*Q3%;,CA854+!,0FPD>F83G=89BB>C,PMHM
D()(;5(&( MH#;E()(053(&(NU(+>;
G9#*A8GBC0C7Q3"U((.)((&'(3(&'((&(()((&(()((&((.)((&
'.)( (&)(2(&'(! (&(&;
M>J)7 F:47 % 7C*?87TAN 7*I(.)(#(&
'((&(()((&(()(#(&(#(.)((&'((&(;!()(%;#8;(&(()(%;
#8;(&(EF()( +(&(+()(;3(&(Q>>()(%;G;;(&(9H*;>F>EEF+;
C,*,Q#II,F>E+++()( *(&(*()(;(&(#;M
H P6>E6*,BJ@6"93#7+, 9=QD08A@TDPCGE<P0+()((&(K
K()(;3(&(GJ!FLMN,+M
ND!ND96!CO()( ,(&(,(.)((&(&;!WHR+,XHR+,XH
R+,(..
((( .*A
1 !
 !)' !*4 D(+
Dim document As JsonDocument
Set document = New JsonDocument
128 !
Dim model As SomeDocumentModel
Set model = New SomeDocumentModel
model.a = True
model.b = 123
Set model.c = New EmptyDocumentModel
model.d = Array("abc")
14# !
document.Load model
128D556 !
Dim request As HttpRequest
Set request = New HttpRequest
1#D55%!
request.method = "PUT"
1D556!
Set request.query = New SomeDocumentModel
request.query.a = "#a"
request.query.b = "#b"
request.query.c = "#c"
1D55#!
 !)' !*4 E(+
Set request.Form = New SomeDocumentModel
request.Form.d = "#d"
request.Form.e = "#e"
request.Form.f = "#f"
1D55!
Set request.headers = New SomeDocumentModel
request.headers.a = "#1"
request.headers.b = "#2"
request.headers.c = "#3"
1$#5!
Set request.timeouts = New HttpTimeouts
request.timeouts.resolve = 5000
request.timeouts.connect = 5000
request.timeouts.send = 5000
request.timeouts.receive = 5000
196D55)
1D55D55!
Set request.response = New HttpResponseInfo
request.response.status = True
request.response.headers = True
request.response.body = "json"
1$2D55<56
' that is encoded in UTF-8.
Dim status As IJsonStatus
 !)' !*4 A(+
Set status = document.save("http://postman-echo.com/put", "utf-8", request)
10#!
Test.assertTrue status.success
Test.message status.response.json
1&
1
1'((&'((&+FF)(%(&(P(.)((&'((&(;$()(:(&(;
03()((&()F,+F+**C&,J&JI?5()(;43(&(>*Q()(;(&(!H
R,3,P%F=0%<<4GJ;SF79?AGS3P!<?779@$B4ETER+=MHM
D()(;5(&( MH#;E()
1(053(&(NU(+>I;:8%*46Q"T?B%,0U((.)((&'(3(&
'((&(()((&(()((&((.)((&'((&#)((&)((&*+,)(#(&)((&'.)(3(&)((&
-((/)((&.)( (&'((&#)((&)((&*+,)(#(&)((&'.)(3(&)((&-((/)((&.)(2(&
'.)(#(&'.)((&'((&(;!()
1(%;#8;(&(()(%;#8;(&(EF()(;3(&(Q,()(%;G;;(&(9H*;
>F>EE*I;J>*CJ>#FEQEQ+#,,()(;(&( MHU(#;EU(()
1((&(KK()(;3(&(GJ!FLMN,+M
ND!ND96!CO()((&(*()((&(+()((&(,(.)((&(&;!WHR+,XH
R+,XHR+,(..
(+ ?B82'
.$$J)' -$-$--F$-$
(+ %
 !
var schemaDoc = Jess.createDocument();
 !)' !*4 +(+
46#$!
schemaDoc.load({
'$id': 'json:numeric_array',
type: 'array',
items: {
type: 'number'
}
});
!
var schemas = Jess.createSchemas();
var schema = schemas.add(schemaDoc, 'json:numeric_array');
 !
var instanceDoc = Jess.createDocument();
4)#$%
#6!
instanceDoc.load([ 0, 1, 2 ]);
:3!
var status = schema.validate(instanceDoc);
0$#!
Test.assertTrue(status.success);
33$!
 !)' !*4 (+
instanceDoc.root.dom[1] = 'abc';
:3!
status = schema.validate(instanceDoc);
0$#!
Test.assertFalse(status.success);
0##3
!
Test.assertEqual(status.response, 'Value type doesn\'t meet requirements');
0#8$
#6!
Test.assertEqual(status.schema.json, '"number"');
0$
#$!
Test.assertEqual(status.instance.json, '"abc"');
(+ @
 !
var schemaDoc = Jess.createDocument();
46#$!
schemaDoc.parse("{\"$id\": \"json:numeric_array\", \"type\": \"array\", \"items\":
{ \"type\": \"number\" }}");
 !)' !*4 (+
!
var schemas = Jess.createSchemas();
var schema = schemas.add(schemaDoc, "json:numeric_array");
 !
var instanceDoc = Jess.createDocument();
4)#$%
#6!
instanceDoc.load(new double[] { 0, 1, 2 });
:3!
var status = schema.validate(instanceDoc);
0$#!
Test.assertTrue(status.success);
33$!
instanceDoc.root.dom[1] = "abc";
:3!
status = schema.validate(instanceDoc);
0$#!
Test.assertFalse(status.success);
0##3
 !)' !*4 (+
!
Test.assertEqual(status.response, "Value type doesn't meet requirements");
0#8$
#6!
Test.assertEqual(status.schema.json, "\"number\"");
0$
#$!
Test.assertEqual(status.instance.json, "\"abc\"");
(+( .*A
1 !
Dim schemaDoc As JsonDocument
Set schemaDoc = New JsonDocument
146#$!
schemaDoc.parse _
"{" + _
"""$id"": ""json:numeric_array""," + _
"""type"": ""array""," + _
"""items"": {" + _
"""type"": ""number""" + _
"}" + _
"}"
1!
 !)' !*4 (+
Dim schemas As JsonSchemas
Set schemas = New JsonSchemas
Dim schema As IJsonSchema
Set schema = schemas.Add(schemaDoc, "json:numeric_array")
1 !
Dim instanceDoc As JsonDocument
Set instanceDoc = New JsonDocument
14)#$%
1#6!
instanceDoc.Load Array(0, 1, 2)
1:3!
Dim status As IJsonStatus
Set status = schema.Validate(instanceDoc)
10$#!
Test.assertTrue status.success
133$!
instanceDoc.root.dom(1) = "abc"
1:3!
Set status = schema.Validate(instanceDoc)
10$#!
Test.assertFalse status.success
 !)' !*4 >(+
10##3
1!
Test.assertEqual status.response, "Value type doesn't meet requirements"
10#8$
1#6!
Test.assertEqual status.schema.json, """number"""
10$
1#$!
Test.assertEqual status.instance.json, """abc"""
(- ?B82=*
.$$J-$$J-$F-
-$@?-$--
(- %
 !
var schemaDoc = Jess.createDocument();
4
#!
schemaDoc.load({ '$ref': 'json:numeric_array' });
 !
var schemas = Jess.createSchemas();
 !)' !*4 C(+
6#!
schemas.onRequestSchema(schemaRequestCallback);
!
var schema = schemas.add(schemaDoc, 'uri:test');
 !
var instanceDoc = Jess.createDocument();
4)#$!
instanceDoc.load([ 0, 1, 2 ]);
:3!
58#1 &S1
)8)
6#8%
1)#)8
##$!
var status = schema.validate(instanceDoc);
0$8#!
Test.assertTrue(status.success);
(- @;*&#D<
5#6#!
var handler = new SchemaHandler((all, uri) => {
 !)' !*4 D(+
7#6
8338!
if (uri == "json:numeric_array") {
8 !
var doc = Jess.createDocument();
46
#$!
doc.parse("{\"$id\": \"json:numeric_array\",
\"type\": \"array\", \"items\": { \"type\": \"number\" }}");
8
 !
return all.add(doc, uri);
}
=%6 !
return null;
});
 !
var schemaDoc = Jess.createDocument();
4
#!
schemaDoc.parse("{ \"$ref\": \"json:numeric_array\" }");
 !
 !)' !*4 E(+
var schemas = Jess.createSchemas();
6 !
schemas.onRequestSchema(handler);
!
var schema = schemas.add(schemaDoc, "uri:test");
 !
var instanceDoc = Jess.createDocument();
4)#$!
instanceDoc.parse("[0, 1, 2]");
:3!
58#1 &S1
)8)
1961#6
 8%1)#)8
##$!
var status = schema.validate(instanceDoc);
0$8#!
Test.assertTrue(status.success);
-$/-
public delegate IJsonSchema SchemaHandlerCallback(IJsonSchemas schemas, string uri);
 !)' !*4 A(+
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class SchemaHandler {
private Func<IJsonSchemas, string, IJsonSchema> callback_;
public SchemaHandler(Func<IJsonSchemas, string, IJsonSchema> callback) {
this.callback_ = callback;
}
[DispId(0)]
public IJsonSchema onRequestSchema(IJsonSchemas schemas, string uri) {
return this.callback_(schemas, uri);
}
}
(-( @;*&'&<
 !
var schemaDoc = Jess.createDocument();
4
#!
schemaDoc.parse("{ \"$ref\": \"json:numeric_array\" }");
 !
var schemas = Jess.createSchemas();
63!
 !)' !*4 +(+
schemas.onRequestSchema(new Func<IJsonSchemas, string, IJsonSchema>((all, uri) => {
if (uri == "json:numeric_array") {
var doc = Jess.createDocument();
doc.parse("{\"$id\": \"json:numeric_array\", \"type\": \"array\", \"items\":
{ \"type\": \"number\" }}");
return all.add(doc, uri);
}
return null;
}));
!
var schema = schemas.add(schemaDoc, "uri:test");
 !
var instanceDoc = Jess.createDocument();
4)#$!
instanceDoc.parse("[0, 1, 2]");
:3!
58#1 &S1
)8)
638%
1)#)8
##$!
var status = schema.validate(instanceDoc);
0$8#!
 !)' !*4 (+
Test.assertTrue(status.success);
(-+ .*A
1 !
Dim schemaDoc As JsonDocument
Set schemaDoc = New JsonDocument
14
1#!
schemaDoc.parse "{ ""$ref"": ""json:numeric_array"" }"
1 !
Dim schemas As JsonSchemas
Set schemas = New JsonSchemas
16 !
schemas.onRequestSchema New SchemaRequestHandler
1!
Dim schema As IJsonSchema
Set schema = schemas.Add(schemaDoc, "uri:test")
1 !
Dim instanceDoc As JsonDocument
Set instanceDoc = New JsonDocument
14)#$!
 !)' !*4 >(+
instanceDoc.Load Array(0, 1, 2)
1:3!
158#1 &S1
1)8)
11961#6
1 8%1)#)
18##$!
Dim status As IJsonStatus
Set status = schema.Validate(instanceDoc)
10$8#!
Test.assertTrue status.success
-$G?/-
Option Explicit
Option Base 0
15#6#!
Public Function onRequestSchema(schemas As JsonSchemas, uri As String) As IJsonSchema
17#6
18338!
If uri = "json:numeric_array" Then
18 !
Dim doc As JsonDocument
Set doc = New JsonDocument
 !)' !*4 >(+
16#$!
doc.parse _
"{" + _
"""$id"": ""json:numeric_array""," + _
"""type"": ""array""," + _
"""items"": {" + _
"""type"": ""number""" + _
"}" + _
"}"
18
1 !
Set onRequestSchema = schemas.Add(doc, uri)
Else
1=%6 !
onRequestSchema = Null
End If
End Function
(/ ?B82
.$$J)' -?)' -$
(/ %
 !
var schemaDoc = Jess.createDocument();
 !)' !*4 >(+
46
3$$
$
#3$2!
schemaDoc.load({
'$id': 'json:integer',
type: 'integer',
title: 'Test schema',
description: 'This simple schema demonstrates how to annotate JSON document',
examples: [0, 1, 2],
readOnly: false,
writeOnly: true,
contentEncoding: 'utf-8',
contentMediaType: 'plaint/text',
'default': 100
});
 !
var schemas = Jess.createSchemas();
var schema = schemas.add(schemaDoc, 'json:integer');
3$!
var instanceDoc = Jess.createDocument();
instanceDoc.load(123);
3!
var status = schema.annotate(instanceDoc);
 !)' !*4 >>(+
08#!
Test.assertTrue(status.success);
$%
$2
##!
var root = instanceDoc.root;
Test.assertEqual(root.annotation.title.dom, 'Test schema');
Test.assertEqual(root.annotation.defaultNode.dom, 100);
Test.assertEqual(root.annotation.description.dom, 'This simple schema demonstrates how to
annotate JSON document');
Test.assertEqual(root.annotation.examples.dom[0], 0);
Test.assertEqual(root.annotation.examples.dom[1], 1);
Test.assertEqual(root.annotation.examples.dom[2], 2);
Test.assertFalse(root.annotation.readOnly.dom);
Test.assertTrue(root.annotation.writeOnly.dom);
Test.assertEqual(root.annotation.contentEncoding.dom, 'utf-8');
Test.assertEqual(root.annotation.contentMediaType.dom, 'plaint/text');
(/ @
 !
var schemaDoc = Jess.createDocument();
46
3$$
$
#3$2!
 !)' !*4 >C(+
schemaDoc.parse(
"{" +
" \"$id\": \"json:integer\"," +
" \"type\": \"integer\"," +
" \"title\": \"Test schema\"," +
" \"description\": \"This simple schema demonstrates how to annotate JSON document\"," +
" \"examples\": [0, 1, 2]," +
" \"readOnly\": false," +
" \"writeOnly\": true," +
" \"contentEncoding\": \"utf-8\"," +
" \"contentMediaType\": \"plaint/text\"," +
" \"default\": 100" +
"}");
 !
var schemas = Jess.createSchemas();
var schema = schemas.add(schemaDoc, "json:integer");
3$!
var instanceDoc = Jess.createDocument();
instanceDoc.load(123);
3!
var status = schema.annotate(instanceDoc);
08#!
Test.assertTrue(status.success);
 !)' !*4 >D(+
$%
$2
##!
var root = instanceDoc.root;
Test.assertEqual(root.annotation.title.dom, "Test schema");
Test.assertEqual(root.annotation.defaultNode.dom, 100.0);
Test.assertEqual(root.annotation.description.dom, "This simple schema demonstrates how to
annotate JSON document");
Test.assertEqual(root.annotation.examples.dom[0], 0.0);
Test.assertEqual(root.annotation.examples.dom[1], 1.0);
Test.assertEqual(root.annotation.examples.dom[2], 2.0);
Test.assertFalse(root.annotation.readOnly.dom);
Test.assertTrue(root.annotation.writeOnly.dom);
Test.assertEqual(root.annotation.contentEncoding.dom, "utf-8");
Test.assertEqual(root.annotation.contentMediaType.dom, "plaint/text");
(/( .*A
1 !
Dim schemaDoc As JsonDocument
Set schemaDoc = New JsonDocument
16
13$$
1$
1#3$2!
schemaDoc.parse _
"{" + _
 !)' !*4 >E(+
"""$id"": ""json:integer""," + _
"""type"": ""integer""," + _
"""title"": ""Test schema""," + _
"""description"": ""This simple schema demonstrates how to annotate JSON document""," + _
"""examples"": [0, 1, 2]," + _
"""readOnly"": false," + _
"""writeOnly"": true," + _
"""contentEncoding"": ""utf-8""," + _
"""contentMediaType"": ""plaint/text""," + _
"""default"": 100" + _
"}"
1 !
Dim schemas As JsonSchemas
Set schemas = New JsonSchemas
Dim schema As IJsonSchema
Set schema = schemas.Add(schemaDoc, "json:integer")
13$!
Dim instanceDoc As JsonDocument
Set instanceDoc = New JsonDocument
instanceDoc.Load 123
13!
Dim status As IJsonStatus
Set status = schema.annotate(instanceDoc)
108#!
 !)' !*4 >A(+
Test.assertTrue status.success
1$%
1$2
1##!
Dim root As IJsonNode
Set root = instanceDoc.root
Test.assertEqual root.annotation.Title.dom, "Test schema"
Test.assertEqual root.annotation.defaultNode.dom, 100
Test.assertEqual root.annotation.Description.dom, "This simple schema demonstrates how to
annotate JSON document"
Test.assertEqual root.annotation.examples.dom(0), 0
Test.assertEqual root.annotation.examples.dom(1), 1
Test.assertEqual root.annotation.examples.dom(2), 2
Test.assertFalse root.annotation.ReadOnly.dom
Test.assertTrue root.annotation.writeOnly.dom
Test.assertEqual root.annotation.contentEncoding.dom, "utf-8"
Test.assertEqual root.annotation.contentMediaType.dom, "plaint/text"
+ 0,,&
 .F-,B2?<,2=@J-@?@F-?$??
F-F--B?<B?=
 .$?Fuuid@?---B-F$F
-@?-F@
> .@$-?,-@
C $,2F-B--F@-@-?7-F'5J??
5J.2@ $?-@$?'6B< ,$=@%?F
JsonEssential@.2@
 !)' !*,22 >+(+
+ 0E)&*
library JsonEssentials
{
importlib("stdole2.tlb");
// Forward declare all types defined in this typelib
interface IJsonDocument;
interface IJsonNode;
interface IJsonNodeCollection;
interface IJsonNodeAnnotation;
interface IJsonStatus;
interface IJsonSelector;
interface IJsonFormat;
interface IJsonTools;
interface IJsonPolicy;
interface IJsonEssentials;
[
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
interface IJsonDocument : IDispatch {
[id(00000000), propget]
HRESULT json([out, retval] BSTR* json);
[id(0x00000001), propget]
 !)' !*,22 >(+
HRESULT root([out, retval] IJsonNode** root);
[id(0x00000002), propget]
HRESULT encoding([out, retval] BSTR* encoding);
[id(0x00000002), propput]
HRESULT encoding([in] BSTR encoding);
[id(0x00000003), propget]
HRESULT format([out, retval] IJsonFormat** format);
[id(0x00000004), propget]
HRESULT location([out, retval] BSTR* location);
[id(0x00000064)]
HRESULT makeEmptyObject([out, retval] IJsonNode** root);
[id(0x00000065)]
HRESULT makeEmptyArray([out, retval] IJsonNode** root);
[id(0x00000066)]
HRESULT makeValue(
[in] VARIANT value,
[out, retval] IJsonNode** root);
[id(0x00000067)]
HRESULT save(
[in] VARIANT target,
[in, optional] VARIANT encoding,
[in, optional] VARIANT request,
[in, optional] VARIANT writeBom,
[out, retval] IJsonStatus** status);
[id(0x00000068)]
HRESULT load(
[in] VARIANT source,
[in, optional] VARIANT encoding,
 !)' !*,22 C(+
[in, optional] VARIANT request,
[out, retval] IJsonStatus** status);
[id(0x00000069)]
HRESULT parse(
[in] BSTR json,
[out, retval] IJsonStatus** status);
};
[
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
interface IJsonNode : IDispatch {
[id(00000000), propget]
HRESULT json([out, retval] BSTR* json);
[id(0x00000001), propget]
HRESULT document([out, retval] IJsonDocument** document);
[id(0x00000002), propget]
HRESULT parent([out, retval] IJsonNode** parent);
[id(0x00000003), propget]
HRESULT name([out, retval] BSTR* name);
[id(0x00000004), propget]
HRESULT isRoot([out, retval] VARIANT_BOOL* result);
[id(0x00000005), propget]
HRESULT isObject([out, retval] VARIANT_BOOL* result);
 !)' !*,22 C(+
[id(0x00000006), propget]
HRESULT isArray([out, retval] VARIANT_BOOL* result);
[id(0x00000007), propget]
HRESULT isEmpty([out, retval] VARIANT_BOOL* result);
[id(0x00000008), propget]
HRESULT isNull([out, retval] VARIANT_BOOL* result);
[id(0x00000009), propget]
HRESULT isNumeric([out, retval] VARIANT_BOOL* result);
[id(0x0000000a), propget]
HRESULT isString([out, retval] VARIANT_BOOL* result);
[id(0x0000000b), propget]
HRESULT isBoolean([out, retval] VARIANT_BOOL* result);
[id(0x0000000c), propget]
HRESULT isContainer([out, retval] VARIANT_BOOL* result);
[id(0x0000000d), propget]
HRESULT hasName([out, retval] VARIANT_BOOL* result);
[id(0x0000000e), propget]
HRESULT kind([out, retval] JsonNodeKind* kind);
[id(0x0000000f), propget]
HRESULT nodes([out, retval] IJsonNodeCollection** nodes);
[id(0x00000010), propget]
HRESULT dom([out, retval] VARIANT* dom);
[id(0x00000010), propput]
HRESULT dom([in] VARIANT dom);
[id(0x00000011), propget]
HRESULT index([out, retval] long* index);
[id(0x00000012), propget]
HRESULT annotation([out, retval] IJsonNodeAnnotation** annotation);
 !)' !*,22 C(+
[id(0x00000064)]
HRESULT equals(
[in] VARIANT other,
[in, optional] VARIANT noName,
[out, retval] VARIANT_BOOL* result);
[id(0x00000065)]
HRESULT save(
[in] VARIANT target,
[in, optional] VARIANT encoding,
[in, optional] VARIANT request,
[in, optional] VARIANT writeBom,
[out, retval] IJsonStatus** status);
[id(0x00000068)]
HRESULT select(
[in] VARIANT selector,
[out, retval] VARIANT* result);
[id(0x00000069)]
HRESULT createJsonPointer([out, retval] IJsonSelector** selector);
};
typedef [uuid(...)]
enum {
jsonNodeObject = 1,
jsonNodeArray = 2,
jsonNodeNull = 3,
jsonNodeNumeric = 4,
jsonNodeString = 5,
jsonNodeBoolean = 6
 !)' !*,22 C>(+
} JsonNodeKind;
[
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
interface IJsonNodeCollection : IDispatch {
[id(0xfffffffc), propget, restricted, hidden]
HRESULT _newEnum([out, retval] IUnknown** punk);
[id(00000000), propget]
HRESULT item(
[in] VARIANT key,
[out, retval] IJsonNode** node);
[id(0x00000002), propget]
HRESULT length([out, retval] long* result);
[id(0x00000064)]
HRESULT add(
[in] VARIANT value,
[in, optional] VARIANT name,
[out, retval] IJsonNode** newNode);
[id(0x00000065)]
HRESULT addObject(
[in, optional] VARIANT name,
[out, retval] IJsonNode** newNode);
[id(0x00000066)]
 !)' !*,22 CC(+
HRESULT addArray(
[in, optional] VARIANT name,
[out, retval] IJsonNode** newNode);
[id(0x00000067)]
HRESULT contains(
[in] VARIANT key,
[out, retval] VARIANT_BOOL* result);
[id(0x00000068)]
HRESULT remove([in] VARIANT key);
[id(0x00000069)]
HRESULT clear();
};
[
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
interface IJsonNodeAnnotation : IDispatch {
[id(0x00000001), propget]
HRESULT title([out, retval] IJsonNode** node);
[id(0x00000002), propget]
HRESULT description([out, retval] IJsonNode** node);
[id(0x00000003), propget]
HRESULT contentEncoding([out, retval] IJsonNode** node);
[id(0x00000004), propget]
 !)' !*,22 CD(+
HRESULT contentMediaType([out, retval] IJsonNode** node);
[id(0x00000005), propget]
HRESULT readOnly([out, retval] IJsonNode** node);
[id(0x00000006), propget]
HRESULT writeOnly([out, retval] IJsonNode** node);
[id(0x00000007), propget]
HRESULT defaultNode([out, retval] IJsonNode** node);
[id(0x00000008), propget]
HRESULT examples([out, retval] IJsonNode** node);
};
[
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
interface IJsonStatus : IDispatch {
[id(00000000), propget]
HRESULT success([out, retval] VARIANT_BOOL* success);
[id(0x00000001), propget]
HRESULT kind([out, retval] JsonStatusKind* kind);
[id(0x00000002), propget]
HRESULT code([out, retval] long* code);
[id(0x00000003), propget]
HRESULT response([out, retval] VARIANT* response);
[id(0x00000004), propget]
 !)' !*,22 CE(+
HRESULT line([out, retval] long* line);
[id(0x00000005), propget]
HRESULT column([out, retval] long* column);
};
typedef [uuid(...)]
enum {
jsonStatusUnknown = 0,
jsonStatusJess = 1,
jsonStatusSystem = 2,
jsonStatusProvider = 3
} JsonStatusKind;
[
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
interface IJsonSelector : IDispatch {
[id(00000000), propget]
HRESULT expression([out, retval] BSTR* expression);
[id(0x00000064)]
HRESULT select(
[in] IDispatch* from,
[out, retval] VARIANT* result);
};
 !)' !*,22 CA(+
[
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
interface IJsonFormat : IDispatch {
[id(0x00000001), propget]
HRESULT indentationSize([out, retval] long* value);
[id(0x00000001), propput]
HRESULT indentationSize([in] long value);
[id(0x00000002), propget]
HRESULT useDosNewLines([out, retval] VARIANT_BOOL* value);
[id(0x00000002), propput]
HRESULT useDosNewLines([in] VARIANT_BOOL value);
[id(0x00000003), propget]
HRESULT useTabs([out, retval] VARIANT_BOOL* value);
[id(0x00000003), propput]
HRESULT useTabs([in] VARIANT_BOOL value);
[id(0x00000004), propget]
HRESULT placeBracketsOnNewLine([out, retval] VARIANT_BOOL* value);
[id(0x00000004), propput]
HRESULT placeBracketsOnNewLine([in] VARIANT_BOOL value);
[id(0x00000005), propget]
HRESULT placeValueOnNewLine([out, retval] VARIANT_BOOL* value);
[id(0x00000005), propput]
 !)' !*,22 C+(+
HRESULT placeValueOnNewLine([in] VARIANT_BOOL value);
[id(0x00000006), propget]
HRESULT addNewLineInEmptyBrackets([out, retval] VARIANT_BOOL* value);
[id(0x00000006), propput]
HRESULT addNewLineInEmptyBrackets([in] VARIANT_BOOL value);
[id(0x00000007), propget]
HRESULT addSpaceBeforeColon([out, retval] VARIANT_BOOL* value);
[id(0x00000007), propput]
HRESULT addSpaceBeforeColon([in] VARIANT_BOOL value);
[id(0x00000008), propget]
HRESULT addSpaceAfterColon([out, retval] VARIANT_BOOL* value);
[id(0x00000008), propput]
HRESULT addSpaceAfterColon([in] VARIANT_BOOL value);
[id(0x00000009), propget]
HRESULT addSpaceInBrackets([out, retval] VARIANT_BOOL* value);
[id(0x00000009), propput]
HRESULT addSpaceInBrackets([in] VARIANT_BOOL value);
[id(0x0000000a), propget]
HRESULT addSpaceAfterComma([out, retval] VARIANT_BOOL* value);
[id(0x0000000a), propput]
HRESULT addSpaceAfterComma([in] VARIANT_BOOL value);
[id(0x0000000b), propget]
HRESULT forceEscapeNonAscii([out, retval] VARIANT_BOOL* value);
[id(0x0000000b), propput]
HRESULT forceEscapeNonAscii([in] VARIANT_BOOL value);
[id(0x0000000c), propget]
HRESULT forceEscapeNonEascii([out, retval] VARIANT_BOOL* value);
[id(0x0000000c), propput]
 !)' !*,22 C(+
HRESULT forceEscapeNonEascii([in] VARIANT_BOOL value);
};
typedef [uuid(...)]
enum {
jsonErrorSuccess = 0,
jsonErrorCommonFirst = 256,
jsonErrorCommonInvalidArgument = 256,
jsonErrorCommonInvalidObjectState = 257,
jsonErrorCommonUnsupportedByObjectKind = 258,
jsonErrorCommonIndexOutOfBoundary = 259,
jsonErrorCommonInvalidEncodingSequence = 260,
jsonErrorCommonBadDereferencing = 261,
jsonErrorCommonNoMemoryAllocated = 262,
jsonErrorCommonLast = 262,
jsonErrorParserFirst = 4096,
jsonErrorParserUnexpectedEndOfData = 4096,
jsonErrorParserUnexpectedToken = 4097,
jsonErrorParserInvalidData = 4098,
jsonErrorParserInvalidEscapeSequence = 4099,
jsonErrorParserLast = 4099,
jsonErrorDomFirst = 12288,
jsonErrorDomCannotBeAddedToObject = 12288,
jsonErrorDomCannotBeAddedToArray = 12289,
jsonErrorDomNoReadAccess = 12290,
jsonErrorDomNoWriteAccess = 12291,
jsonErrorDomNodeNotFound = 12292,
jsonErrorDomAlreadyAtRoot = 12293,
 !)' !*,22 D(+
jsonErrorDomNodeHasNoName = 12294,
jsonErrorDomNoAssociatedNode = 12295,
jsonErrorDomForeignNode = 12296,
jsonErrorDomLast = 12296
} JsonError;
[
uuid(...),
helpstring("JSON DOM Document"),
licensed
]
coclass JsonDocument {
[default] interface IJsonDocument;
};
[
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
interface IJsonTools : IDispatch {
[id(0x00000001), propget]
HRESULT policy([out, retval] IJsonPolicy** policy);
[id(0x0000006a)]
HRESULT createJsonPointer(
[in] BSTR pointer,
 !)' !*,22 D(+
[out, retval] IJsonSelector** selector);
[id(0x0000006b)]
HRESULT createRelativeJsonPointer(
[in] BSTR pointer,
[out, retval] IJsonSelector** selector);
};
[
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
interface IJsonPolicy : IDispatch {
[id(0x00000001), propget]
HRESULT nullValue([out, retval] VARIANT* nullValue);
[id(0x00000001), propput]
HRESULT nullValue([in] VARIANT nullValue);
[id(0x00000002), propget]
HRESULT ddaEscape([out, retval] BSTR* key);
[id(0x00000002), propput]
HRESULT ddaEscape([in] BSTR key);
};
[
uuid(...),
helpstring("JSON Tools"),
 !)' !*,22 D(+
licensed
]
coclass JsonTools {
[default] interface IJsonTools;
};
[
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
interface IJsonEssentials : IDispatch {
[id(0x00000001), propget]
HRESULT id([out, retval] long* id);
[id(0x00000002), propget]
HRESULT versionMajor([out, retval] long* major);
[id(0x00000003), propget]
HRESULT versionMinor([out, retval] long* minor);
[id(0x00000004), propget]
HRESULT versionPatch([out, retval] long* patch);
[id(0x00000005), propget]
HRESULT licenseText([out, retval] BSTR* license);
[id(0x00000064)]
HRESULT unlock(
[in] BSTR licenseToken,
[out, retval] VARIANT_BOOL* unlocked);
 !)' !*,22 D>(+
[id(0x00000065), propget]
HRESULT tools([out, retval] IJsonTools** tools);
[id(0x00000066)]
HRESULT createDocument([out, retval] IJsonDocument** document);
};
[
uuid(...),
helpstring("JSON Essentials library facade"),
licensed
]
coclass JsonEssentials {
[default] interface IJsonEssentials;
};
}
+ E)&*
library JsonEssentials
// TLib : // TLib : OLE Automation : {...}
importlib("stdole2.tlb");
// Forward declare all types defined in this typelib
interface IJsonDocument;
interface IJsonNode;
interface IJsonNodeCollection;
interface IJsonNodeAnnotation;
interface IJsonStatus;
 !)' !*,22 DC(+
interface IJsonSelector;
interface IJsonFormat;
interface IJsonTools;
interface IJsonPolicy;
interface IJsonSchemas;
interface IJsonSchema;
interface IJsonEssentials;
[
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
interface IJsonDocument : IDispatch {
[id(00000000), propget]
HRESULT json([out, retval] BSTR* json);
[id(0x00000001), propget]
HRESULT root([out, retval] IJsonNode** root);
[id(0x00000002), propget]
HRESULT encoding([out, retval] BSTR* encoding);
[id(0x00000002), propput]
HRESULT encoding([in] BSTR encoding);
[id(0x00000003), propget]
HRESULT format([out, retval] IJsonFormat** format);
[id(0x00000004), propget]
HRESULT location([out, retval] BSTR* location);
 !)' !*,22 DD(+
[id(0x00000064)]
HRESULT makeEmptyObject([out, retval] IJsonNode** root);
[id(0x00000065)]
HRESULT makeEmptyArray([out, retval] IJsonNode** root);
[id(0x00000066)]
HRESULT makeValue(
[in] VARIANT value,
[out, retval] IJsonNode** root);
[id(0x00000067)]
HRESULT save(
[in] VARIANT target,
[in, optional] VARIANT encoding,
[in, optional] VARIANT request,
[in, optional] VARIANT writeBom,
[out, retval] IJsonStatus** status);
[id(0x00000068)]
HRESULT load(
[in] VARIANT source,
[in, optional] VARIANT encoding,
[in, optional] VARIANT request,
[out, retval] IJsonStatus** status);
[id(0x00000069)]
HRESULT parse(
[in] BSTR json,
[out, retval] IJsonStatus** status);
};
[
 !)' !*,22 DE(+
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
interface IJsonNode : IDispatch {
[id(00000000), propget]
HRESULT json([out, retval] BSTR* json);
[id(0x00000001), propget]
HRESULT document([out, retval] IJsonDocument** document);
[id(0x00000002), propget]
HRESULT parent([out, retval] IJsonNode** parent);
[id(0x00000003), propget]
HRESULT name([out, retval] BSTR* name);
[id(0x00000004), propget]
HRESULT isRoot([out, retval] VARIANT_BOOL* result);
[id(0x00000005), propget]
HRESULT isObject([out, retval] VARIANT_BOOL* result);
[id(0x00000006), propget]
HRESULT isArray([out, retval] VARIANT_BOOL* result);
[id(0x00000007), propget]
HRESULT isEmpty([out, retval] VARIANT_BOOL* result);
[id(0x00000008), propget]
HRESULT isNull([out, retval] VARIANT_BOOL* result);
[id(0x00000009), propget]
HRESULT isNumeric([out, retval] VARIANT_BOOL* result);
[id(0x0000000a), propget]
 !)' !*,22 DA(+
HRESULT isString([out, retval] VARIANT_BOOL* result);
[id(0x0000000b), propget]
HRESULT isBoolean([out, retval] VARIANT_BOOL* result);
[id(0x0000000c), propget]
HRESULT isContainer([out, retval] VARIANT_BOOL* result);
[id(0x0000000d), propget]
HRESULT hasName([out, retval] VARIANT_BOOL* result);
[id(0x0000000e), propget]
HRESULT kind([out, retval] JsonNodeKind* kind);
[id(0x0000000f), propget]
HRESULT nodes([out, retval] IJsonNodeCollection** nodes);
[id(0x00000010), propget]
HRESULT dom([out, retval] VARIANT* dom);
[id(0x00000010), propput]
HRESULT dom([in] VARIANT dom);
[id(0x00000011), propget]
HRESULT index([out, retval] long* index);
[id(0x00000012), propget]
HRESULT annotation([out, retval] IJsonNodeAnnotation** annotation);
[id(0x00000064)]
HRESULT equals(
[in] VARIANT other,
[in, optional] VARIANT noName,
[out, retval] VARIANT_BOOL* result);
[id(0x00000065)]
HRESULT save(
[in] VARIANT target,
[in, optional] VARIANT encoding,
 !)' !*,22 D+(+
[in, optional] VARIANT request,
[in, optional] VARIANT writeBom,
[out, retval] IJsonStatus** status);
[id(0x00000068)]
HRESULT select(
[in] VARIANT selector,
[out, retval] VARIANT* result);
[id(0x00000069)]
HRESULT createJsonPointer([out, retval] IJsonSelector** selector);
};
typedef [uuid(...)]
enum {
jsonNodeObject = 1,
jsonNodeArray = 2,
jsonNodeNull = 3,
jsonNodeNumeric = 4,
jsonNodeString = 5,
jsonNodeBoolean = 6
} JsonNodeKind;
[
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
 !)' !*,22 D(+
interface IJsonNodeCollection : IDispatch {
[id(0xfffffffc), propget, restricted, hidden]
HRESULT _newEnum([out, retval] IUnknown** punk);
[id(00000000), propget]
HRESULT item(
[in] VARIANT key,
[out, retval] IJsonNode** node);
[id(0x00000002), propget]
HRESULT length([out, retval] long* result);
[id(0x00000064)]
HRESULT add(
[in] VARIANT value,
[in, optional] VARIANT name,
[out, retval] IJsonNode** newNode);
[id(0x00000065)]
HRESULT addObject(
[in, optional] VARIANT name,
[out, retval] IJsonNode** newNode);
[id(0x00000066)]
HRESULT addArray(
[in, optional] VARIANT name,
[out, retval] IJsonNode** newNode);
[id(0x00000067)]
HRESULT contains(
[in] VARIANT key,
[out, retval] VARIANT_BOOL* result);
[id(0x00000068)]
HRESULT remove([in] VARIANT key);
 !)' !*,22 E(+
[id(0x00000069)]
HRESULT clear();
};
[
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
interface IJsonNodeAnnotation : IDispatch {
[id(0x00000001), propget]
HRESULT title([out, retval] IJsonNode** node);
[id(0x00000002), propget]
HRESULT description([out, retval] IJsonNode** node);
[id(0x00000003), propget]
HRESULT contentEncoding([out, retval] IJsonNode** node);
[id(0x00000004), propget]
HRESULT contentMediaType([out, retval] IJsonNode** node);
[id(0x00000005), propget]
HRESULT readOnly([out, retval] IJsonNode** node);
[id(0x00000006), propget]
HRESULT writeOnly([out, retval] IJsonNode** node);
[id(0x00000007), propget]
HRESULT defaultNode([out, retval] IJsonNode** node);
[id(0x00000008), propget]
HRESULT examples([out, retval] IJsonNode** node);
 !)' !*,22 E(+
};
[
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
interface IJsonStatus : IDispatch {
[id(00000000), propget]
HRESULT success([out, retval] VARIANT_BOOL* success);
[id(0x00000001), propget]
HRESULT kind([out, retval] JsonStatusKind* kind);
[id(0x00000002), propget]
HRESULT code([out, retval] long* code);
[id(0x00000003), propget]
HRESULT response([out, retval] VARIANT* response);
[id(0x00000004), propget]
HRESULT line([out, retval] long* line);
[id(0x00000005), propget]
HRESULT column([out, retval] long* column);
[id(0x00000006), propget]
HRESULT schema([out, retval] IJsonNode** schema);
[id(0x00000007), propget]
HRESULT instance([out, retval] IJsonNode** instance);
};
 !)' !*,22 E(+
typedef [uuid(...)]
enum {
jsonStatusUnknown = 0,
jsonStatusJess = 1,
jsonStatusSystem = 2,
jsonStatusProvider = 3
} JsonStatusKind;
[
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
interface IJsonSelector : IDispatch {
[id(00000000), propget]
HRESULT expression([out, retval] BSTR* expression);
[id(0x00000064)]
HRESULT select(
[in] IDispatch* from,
[out, retval] VARIANT* result);
};
[
odl,
uuid(...),
dual,
 !)' !*,22 E>(+
nonextensible,
oleautomation
]
interface IJsonFormat : IDispatch {
[id(0x00000001), propget]
HRESULT indentationSize([out, retval] long* value);
[id(0x00000001), propput]
HRESULT indentationSize([in] long value);
[id(0x00000002), propget]
HRESULT useDosNewLines([out, retval] VARIANT_BOOL* value);
[id(0x00000002), propput]
HRESULT useDosNewLines([in] VARIANT_BOOL value);
[id(0x00000003), propget]
HRESULT useTabs([out, retval] VARIANT_BOOL* value);
[id(0x00000003), propput]
HRESULT useTabs([in] VARIANT_BOOL value);
[id(0x00000004), propget]
HRESULT placeBracketsOnNewLine([out, retval] VARIANT_BOOL* value);
[id(0x00000004), propput]
HRESULT placeBracketsOnNewLine([in] VARIANT_BOOL value);
[id(0x00000005), propget]
HRESULT placeValueOnNewLine([out, retval] VARIANT_BOOL* value);
[id(0x00000005), propput]
HRESULT placeValueOnNewLine([in] VARIANT_BOOL value);
[id(0x00000006), propget]
HRESULT addNewLineInEmptyBrackets([out, retval] VARIANT_BOOL* value);
[id(0x00000006), propput]
HRESULT addNewLineInEmptyBrackets([in] VARIANT_BOOL value);
 !)' !*,22 EC(+
[id(0x00000007), propget]
HRESULT addSpaceBeforeColon([out, retval] VARIANT_BOOL* value);
[id(0x00000007), propput]
HRESULT addSpaceBeforeColon([in] VARIANT_BOOL value);
[id(0x00000008), propget]
HRESULT addSpaceAfterColon([out, retval] VARIANT_BOOL* value);
[id(0x00000008), propput]
HRESULT addSpaceAfterColon([in] VARIANT_BOOL value);
[id(0x00000009), propget]
HRESULT addSpaceInBrackets([out, retval] VARIANT_BOOL* value);
[id(0x00000009), propput]
HRESULT addSpaceInBrackets([in] VARIANT_BOOL value);
[id(0x0000000a), propget]
HRESULT addSpaceAfterComma([out, retval] VARIANT_BOOL* value);
[id(0x0000000a), propput]
HRESULT addSpaceAfterComma([in] VARIANT_BOOL value);
[id(0x0000000b), propget]
HRESULT forceEscapeNonAscii([out, retval] VARIANT_BOOL* value);
[id(0x0000000b), propput]
HRESULT forceEscapeNonAscii([in] VARIANT_BOOL value);
[id(0x0000000c), propget]
HRESULT forceEscapeNonEascii([out, retval] VARIANT_BOOL* value);
[id(0x0000000c), propput]
HRESULT forceEscapeNonEascii([in] VARIANT_BOOL value);
};
typedef [uuid(...)]
enum {
 !)' !*,22 ED(+
jsonErrorSuccess = 0,
jsonErrorCommonFirst = 256,
jsonErrorCommonInvalidArgument = 256,
jsonErrorCommonInvalidObjectState = 257,
jsonErrorCommonUnsupportedByObjectKind = 258,
jsonErrorCommonIndexOutOfBoundary = 259,
jsonErrorCommonInvalidEncodingSequence = 260,
jsonErrorCommonBadDereferencing = 261,
jsonErrorCommonNoMemoryAllocated = 262,
jsonErrorCommonLast = 262,
jsonErrorParserFirst = 4096,
jsonErrorParserUnexpectedEndOfData = 4096,
jsonErrorParserUnexpectedToken = 4097,
jsonErrorParserInvalidData = 4098,
jsonErrorParserInvalidEscapeSequence = 4099,
jsonErrorParserLast = 4099,
jsonErrorDomFirst = 12288,
jsonErrorDomCannotBeAddedToObject = 12288,
jsonErrorDomCannotBeAddedToArray = 12289,
jsonErrorDomNoReadAccess = 12290,
jsonErrorDomNoWriteAccess = 12291,
jsonErrorDomNodeNotFound = 12292,
jsonErrorDomAlreadyAtRoot = 12293,
jsonErrorDomNodeHasNoName = 12294,
jsonErrorDomNoAssociatedNode = 12295,
jsonErrorDomForeignNode = 12296,
jsonErrorDomLast = 12296,
jsonErrorSchemaFirst = 16384,
 !)' !*,22 EE(+
jsonErrorSchemaInvalidUri = 16384,
jsonErrorSchemaCannotBeResolved = 16385,
jsonErrorSchemaUnexpectedValue = 16386,
jsonErrorSchemaUnexpectedValueType = 16387,
jsonErrorSchemaDuplicatedAssertion = 16388,
jsonErrorSchemaInvalidAssertionSyntax = 16389,
jsonErrorSchemaReferenceCycle = 16390,
jsonErrorSchemaDuplicatedId = 16391,
jsonErrorSchemaUnexpectedSchema = 16392,
jsonErrorSchemaUnsupportedSchema = 16393,
jsonErrorSchemaRegex = 16394,
jsonErrorSchemaSchemaRequired = 16395,
jsonErrorSchemaLast = 16395,
jsonErrorValidationFirst = 20480,
jsonErrorValidationFalseAssertion = 20480,
jsonErrorValidationValueType = 20481,
jsonErrorValidationValue = 20482,
jsonErrorValidationRequiredProperty = 20483,
jsonErrorValidationNodeCount = 20484,
jsonErrorValidationNotUnique = 20485,
jsonErrorValidationRequiredNode = 20486,
jsonErrorValidationLast = 20486
} JsonError;
[
uuid(...),
helpstring("JSON DOM Document"),
licensed
 !)' !*,22 EA(+
]
coclass JsonDocument {
[default] interface IJsonDocument;
};
[
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
interface IJsonTools : IDispatch {
[id(0x00000001), propget]
HRESULT policy([out, retval] IJsonPolicy** policy);
[id(0x0000006a)]
HRESULT createJsonPointer(
[in] BSTR pointer,
[out, retval] IJsonSelector** selector);
[id(0x0000006b)]
HRESULT createRelativeJsonPointer(
[in] BSTR pointer,
[out, retval] IJsonSelector** selector);
};
[
odl,
uuid(...),
 !)' !*,22 E+(+
dual,
nonextensible,
oleautomation
]
interface IJsonPolicy : IDispatch {
[id(0x00000001), propget]
HRESULT nullValue([out, retval] VARIANT* nullValue);
[id(0x00000001), propput]
HRESULT nullValue([in] VARIANT nullValue);
[id(0x00000002), propget]
HRESULT ddaEscape([out, retval] BSTR* key);
[id(0x00000002), propput]
HRESULT ddaEscape([in] BSTR key);
};
[
uuid(...),
helpstring("JSON Tools"),
licensed
]
coclass JsonTools {
[default] interface IJsonTools;
};
[
odl,
uuid(...),
dual,
 !)' !*,22 E(+
nonextensible,
oleautomation
]
interface IJsonSchemas : IDispatch {
[id(0xfffffffc), propget, restricted, hidden]
HRESULT _newEnum([out, retval] IUnknown** punk);
[id(00000000), propget]
HRESULT item(
[in] long index,
[out, retval] BSTR* id);
[id(0x00000002), propget]
HRESULT length([out, retval] long* result);
[id(0x00000064)]
HRESULT add(
[in] IDispatch* schemaNode,
[in] BSTR defaultId,
[out, retval] IJsonSchema** schema);
[id(0x00000065)]
HRESULT find(
[in] BSTR id,
[out, retval] IJsonSchema** schema);
[id(0x00000066)]
HRESULT remove([in] BSTR id);
[id(0x00000067)]
HRESULT clear();
[id(0x00000068)]
HRESULT annotate(
[in] IDispatch* instance,
 !)' !*,22 A(+
[in, optional] VARIANT id,
[out, retval] IJsonStatus** status);
[id(0x00000069)]
HRESULT validate(
[in] IDispatch* instance,
[in, optional] VARIANT id,
[out, retval] IJsonStatus** status);
[id(0x000000c8)]
HRESULT onRequestSchema([in] VARIANT handler);
};
[
odl,
uuid(...),
dual,
nonextensible,
oleautomation
]
interface IJsonSchema : IDispatch {
[id(0x00000001), propget]
HRESULT id([out, retval] BSTR* id);
[id(0x00000002), propget]
HRESULT standard([out, retval] JsonSchemaStandard* standard);
[id(0x00000003), propget]
HRESULT schemas([out, retval] IJsonSchemas** schemas);
[id(0x00000004), propget]
HRESULT root([out, retval] IJsonNode** root);
[id(0x00000064)]
 !)' !*,22 A(+
HRESULT annotate(
[in] IDispatch* instance,
[out, retval] IJsonStatus** status);
[id(0x00000065)]
HRESULT validate(
[in] IDispatch* instance,
[out, retval] IJsonStatus** status);
};
typedef [uuid(...)]
enum {
jsonSchemaStandardUndefined = 0,
jsonSchemaStandardDraft07 = 7
} JsonSchemaStandard;
[
uuid(...),
helpstring("JSON Schemas"),
licensed
]
coclass JsonSchemas {
[default] interface IJsonSchemas;
};
[
odl,
uuid(...),
dual,
 !)' !*,22 A(+
nonextensible,
oleautomation
]
interface IJsonEssentials : IDispatch {
[id(0x00000001), propget]
HRESULT id([out, retval] long* id);
[id(0x00000002), propget]
HRESULT versionMajor([out, retval] long* major);
[id(0x00000003), propget]
HRESULT versionMinor([out, retval] long* minor);
[id(0x00000004), propget]
HRESULT versionPatch([out, retval] long* patch);
[id(0x00000005), propget]
HRESULT licenseText([out, retval] BSTR* license);
[id(0x00000064)]
HRESULT unlock(
[in] BSTR licenseToken,
[out, retval] VARIANT_BOOL* unlocked);
[id(0x00000065), propget]
HRESULT tools([out, retval] IJsonTools** tools);
[id(0x00000066)]
HRESULT createDocument([out, retval] IJsonDocument** document);
[id(0x00000067)]
HRESULT createSchemas([out, retval] IJsonSchemas** schemas);
};
[
uuid(...),
 !)' !*,22 A>(+
helpstring("JSON Essentials library facade"),
licensed
]
coclass JsonEssentials {
[default] interface IJsonEssentials;
};
};
 !)' !*F- AC(+
- 
 !7CC.)' -
((JJJ-$(?@-((-$CC(
 )' -$-B-,FA
((H-$(-B-%$IFA
> 0E)-'@H- <)' =
((F($(F-E
C )' ,F
((-%F(-($(FJH
D 0>E4.0+&F$F$F'ECE
((JJJF(F-(F->E
E 0A+4.0E&-F'ECE
((F($(F-A+
A 0D+4-0$F J%-
((F($(F-D+
+ 7'4.'2!?$-
((-$-F-$(?(-(JJ\-($?(@@@DAFACCD-A+A
F+>->>E
 0E>ED.$4L!.0
((F($(F-E>ED
 0A>/.F-</..(=$-
((F($(F-A>
 0>+E4F$?-B<4=9-
((F($(F->+E
 0+EA0$@04/.72
((F($(F-+EA
 !)' !* AD(+
/ '
.$@?F)' !  J?@@J?@J
H--&J-@&$B--$
 )' -$.?.-$)' -$@ ((H-$(&?@
@F$&?-$&$-?@?
J@$
((?@-$(H-$()' -$.?
 :UU@:$:$?UUF$J%-??$@
F?FFG?
((@
> 5$ . - UU$$ J 1/   -  @ - 
@??-F$
((JJJ$
C 7-F 5? ?  $ -  1J  $ -
$@7-F5??
((??$-F-$
D 5??$&$?F?--B?@-F$-
((-??-$
E 91%- .$?F?-J@-  !"J@@-%&$B
-
((J%--$
A $L 1 . $?F?- J@-   !" $& J@  ?- -

((J$L-$
 !)' !* AE(+
+ 2@'R-.-?$-2@'R-1^
((JJJ@R-
 .J@F-?$-@-
((--
 $ .J@--/..?@ )' !
$
((JJJ$-$
 .F!@ !"J@?-F
((F
 07.B$$B$?$1J
F$
((JJJF$-$
> 7%.-UU$$F)' !$@@?$$
((-$%
C %5 @?@-?%)' !?-B?
((%-$
D $@?!K!/??)' -$$$
((JJJ-
E '24F--B-F-?@$?
((JJJ
A J%S$TF!@?$--
((J%$F
 !)' !*.FJ2- AA(+
3 "8'F%1C,
3 2%#&*G%H
<%F$((JJJ-(--$$F?@-=
PCRE2 LICENCE
-------------
PCRE2 is a library of functions to support regular expressions whose syntax
and semantics are as close as possible to those of the Perl 5 language.
Releases 10.00 and above of PCRE2 are distributed under the terms of the "BSD"
licence, as specified below, with one exemption for certain binary
redistributions. The documentation for PCRE2, supplied in the "doc" directory,
is distributed under the same terms as the software itself. The data in the
testdata directory is not copyrighted and is in the public domain.
The basic library functions are written in C and are freestanding. Also
included in the distribution is a just-in-time compiler that can be used to
optimize pattern matching. This is an optional feature that can be omitted when
the library is built.
THE BASIC LIBRARY FUNCTIONS
---------------------------
Written by: Philip Hazel
Email local part: Philip.Hazel
Email domain: gmail.com
 !)' !*.FJ2- A+(+
Retired from University of Cambridge Computing Service,
Cambridge, England.
Copyright (c) 1997-2021 University of Cambridge
All rights reserved.
PCRE2 JUST-IN-TIME COMPILATION SUPPORT
--------------------------------------
Written by: Zoltan Herczeg
Email local part: hzmester
Email domain: freemail.hu
Copyright(c) 2010-2021 Zoltan Herczeg
All rights reserved.
STACK-LESS JUST-IN-TIME COMPILER
--------------------------------
Written by: Zoltan Herczeg
Email local part: hzmester
Email domain: freemail.hu
Copyright(c) 2009-2021 Zoltan Herczeg
All rights reserved.
THE "BSD" LICENCE
 !)' !*.FJ2- A(+
-----------------
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notices,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notices, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the University of Cambridge nor the names of any
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
EXEMPTION FOR BINARY LIBRARY-LIKE PACKAGES
 !)' !*.FJ2- +(+
------------------------------------------
The second condition in the BSD licence (covering binary redistributions) does
not apply all the way down a chain of software. If binary package A includes
PCRE2, it must respect the condition, but if package B is software that
includes package A, the condition is not imposed on package B unless it uses
PCRE2 independently.
End